【问题标题】:Cannot deserialize value of type `Covid` from Array value (token `JsonToken.START_ARRAY`)无法从数组值反序列化类型为“Covid”的值(令牌“JsonToken.START_ARRAY”)
【发布时间】:2021-09-17 11:10:44
【问题描述】:

主要方法

public static void apiRequest(String country){
    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://covid-19-data.p.rapidapi.com/report/country/name?date=2020-04-01&name="+country))
            .header("x-rapidapi-host", "covid-19-data.p.rapidapi.com")
            .header("x-rapidapi-key", "e7d0ae3dfcmshb4765a4bcd9edc9p198994jsn1a1b1d5fa50d")
            .method("GET", HttpRequest.BodyPublishers.noBody())
            .build();
    HttpResponse<String> response = null;
    try {
        response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println(response.body());

    ObjectMapper oM = new ObjectMapper();

    oM.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    try {
        Covid covid = oM.readValue(response.body(), Covid.class);
        System.out.println(covid);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
}

这里是整个响应字符串: [{"country":"Austria","provinces":[{"province":"Austria","confirmed":10711,"recovered":1436,"deaths":146,"active":9129}], "纬度":47.516231,"经度":14.550072,"日期":"2020-04-01"}]

我只想要 Covid 类中的某些值

Covid 类

public class Covid {
String province;
int active;

public Covid(String province, int active) {
    this.province = province;
    this.active = active;
}

public String getProvince() {
    return province;
}

public void setProvince(String province) {
    this.province = province;
}

public int getActive() {
    return active;
}

public void setActive(int active) {
    this.active = active;
}
}

我的错误: com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从数组值(令牌JsonToken.START_ARRAY)中反序列化Covid类型的值

请帮帮我

【问题讨论】:

    标签: java json objectmapper


    【解决方案1】:

    API 结果是一个数组,您正在尝试读取单个对象值。调用oM.readValue时一定要读取集合或数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 2017-09-06
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      相关资源
      最近更新 更多