gpt4 book ai didi

java - 如何在 Spring/Java 中使用 JSON 未命名值来使用 REST?

转载 作者:太空宇宙 更新时间:2023-11-04 14:30:33 25 4
gpt4 key购买 nike

我是 JSON 和 REST 新手。我正在使用 Spring 的 RestTemplate 来使用 JSON。我可以通过以下 API 调用使用 JSON 响应来完成此操作:http://data.fcc.gov/api/block/find?latitude=39.9936&longitude=-105.0892&showall=false&format=json

JSON 响应:

    {"Block":{"FIPS":"080130608005010"},"County":
{"FIPS":"08013","name":"Boulder"},"State":
{"FIPS":"08","code":"CO","name":"Colorado"},"status":"OK","executionTime":"8"}

但是,当我从此请求中获取此 FIPS 代码并尝试使用它通过以下调用请求人口普查信息时:http://api.census.gov/data/2012/acs5?get=B19001_002E&for=tract:060800&in=state:08+county:013&key=

这是我得到的 JSON 响应:

    [["B19001_002E","state","county","tract"],
["225","08","013","060800"]]

正如您所看到的,所有“变量”都是未命名的并且位于数组中。我不知道如何使用 Spring 的 RestTemplate 使用 POJO 来使用它。

这是我的 Java 代码(其中 URL 是 API 调用的字符串):

RestTemplate restTemplate = new RestTemplate();
CensusData cd = restTemplate.getForObject(URL, CensusData.class);
System.out.println("data: " + cd.getData());

这是我的 POJO(人口普查数据):

@JsonIgnoreProperties(ignoreUnknown = true)
public class CensusData {

@JsonProperty
private List<List<String>> data;

public String getData() {
String str = "";
for(List<String> list : data) {
for(String s : list) {
str += s;
str += " ";
}
}
return str;
}
}

问题是我不知道在 CensusData 对象中如何命名“数据”,因为这些值在 JSON 响应中未命名。所以我抛出了这个异常:

Exception in thread "main" org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not deserialize instance of template.main.CensusData out of START_ARRAY token

最佳答案

使用 Gson https://code.google.com/p/google-gson/ .

String result = getResponseFromServer(String url); //restful
Gson gson = new Gson();
String[][] str = gson.fromJson(result, String[][].class);

关于java - 如何在 Spring/Java 中使用 JSON 未命名值来使用 REST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com