gpt4 book ai didi

java - 如何解析对 Java 对象列表的嵌套 JSON 响应

转载 作者:行者123 更新时间:2023-11-30 02:12:53 26 4
gpt4 key购买 nike

我希望将包含嵌套 JSON 数据的响应解析为 Java 对象列表。 JSON 响应采用以下格式。

{
"IsSuccess": true,
"TotalCount": 250,
"Response": [
{
"Name": "Afghanistan",
"CurrencyCode": "AFN",
"CurrencyName": "Afghan afghani"
},
{
"Name": "Afghanistan",
"CurrencyCode": "AFN",
"CurrencyName": "Afghan afghani"
},
{
"Name": "Afghanistan",
"CurrencyCode": "AFN",
"CurrencyName": "Afghan afghani"
}
]
}

我创建了相应的 Country 类来解析为 POJO。我正在使用 Jackson 来解析数据。

Client c = ClientBuilder.newClient();
WebTarget t = c.target("http://countryapi.gear.host/v1/Country/getCountries");
Response r = t.request().get();
String s = r.readEntity(String.class);
System.out.println(s);
ObjectMapper mapper = new ObjectMapper();
try {
List<Country> myObjects = mapper.readValue(s, new TypeReference<List<Country>>(){});
System.out.println(myObjects.size());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

实际的国家/地区列表位于 JSON 字符串中的“响应”中。我如何检索响应下的内容,然后将其解析为国家/地区列表?

最佳答案

不确定您使用的客户端 API 不能简单地提供所需类型的实体。大多数客户端应该有实用方法来进行此类转换。无论如何,这里有一种方法可以实现你想要的:

final JsonNode jsonNode = mapper.readTree(jsonString);
final ArrayNode responseArray = (ArrayNode) jsonNode.get("Response");
//UPDATED to use convertValue()
final List<Country> countries = mapper.convertValue(responseArray, new TypeReference<List<Country>>(){});

国家/地区.class

 class Country {
@JsonProperty("Name")
public String name;
@JsonProperty("CurrencyCode")
public String currencyCode;
@JsonProperty("CurrencyName")
public String currencyName;
}

关于java - 如何解析对 Java 对象列表的嵌套 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49599548/

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