首页 > 解决方案 > 如何使用 java、JSON 获取一个国家的 covid 信息

问题描述

我正在制作一个 java 文件,您可以在其中输入该国家/地区,然后它会向您显示该国家/地区的 covid-19 信息。我正在使用的网站是https://covid19.mathdro.id/api/countries/ 在这里我希望用户输入国家并将国家名称添加到网站例如如果用户输入印度它应该这样做这个 https://covid19.mathdro.id/api/countries/India

任何帮助都是必要的,谢谢

标签: javajsonurl

解决方案


您可以使用 Retrofit 调用 API

import okhttp3.OkHttpClient;
import retrofit2.Call;
import retrofit2.GsonConverterFactory;
import retrofit2.Retrofit;
import retrofit2.Response;

public class Retrofit_Example {
  public static void main(String[] args) {
    OkHttpClient.Builder client = new OkHttpClient.Builder();
    Retrofit retrofit = new Retrofit.Builder().baseUrl("https://covid19.mathdro.id/")
        .addConverterFactory(GsonConverterFactory.create())
        .client(client.build())
        .build();

    Service service = retrofit.create(Service.class);
    Call<Response1> responseCall = service.getData("India");
    try {
      Response<Response1> response = responseCall.execute();
      Response1 apiResponse = response.body();
      System.out.println(apiResponse);
    } catch (Exception ex) {
      ex.printStackTrace();
    }

  }
}

您必须首先从来自 api 的 JSON 响应以及改造客户端创建 POJO。POJO 用于响应

public class Response1 {

    private Confirmed confirmed;
    private Deaths deaths;
    private String lastUpdate;
    private Recovered recovered;

    public Confirmed getConfirmed() {
        return confirmed;
    }

    public void setConfirmed(Confirmed confirmed) {
        this.confirmed = confirmed;
    }

    public Deaths getDeaths() {
        return deaths;
    }

    public void setDeaths(Deaths deaths) {
        this.deaths = deaths;
    }

    public String getLastUpdate() {
        return lastUpdate;
    }

    public void setLastUpdate(String lastUpdate) {
        this.lastUpdate = lastUpdate;
    }

    public Recovered getRecovered() {
        return recovered;
    }

    public void setRecovered(Recovered recovered) {
        this.recovered = recovered;
    }

    @Override
    public String toString() {
        return "Response1{" +
            "confirmed=" + confirmed +
            ", deaths=" + deaths +
            ", lastUpdate='" + lastUpdate + '\'' +
            ", recovered=" + recovered +
            '}';
    }
}

public class Recovered {

    private String detail;
    private Long value;

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public Long getValue() {
        return value;
    }

    public void setValue(Long value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Recovered{" +
            "detail='" + detail + '\'' +
            ", value=" + value +
            '}';
    }
}

public class Deaths {


    private String detail;        
    private Long value;

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public Long getValue() {
        return value;
    }

    public void setValue(Long value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Deaths{" +
            "detail='" + detail + '\'' +
            ", value=" + value +
            '}';
    }
}

public class Confirmed {


    private String detail;

    private Long value;

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public Long getValue() {
        return value;
    }

    public void setValue(Long value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Confirmed{" +
            "detail='" + detail + '\'' +
            ", value=" + value +
            '}';
    }
}

改造客户

public interface Service {
  @GET("/api/countries/{country}")
  public Call<Response1> getData(@Path("country")String country);
}

推荐阅读