如何反序列化此JSON结构?
[
{
"page": 1,
"per_page": "50"
},
[
{
"id": "IC.BUS.EASE.XQ",
"name": "ion"
},
{
"id": "OIUPOIUPOIU",
"name": "lal alalalal"
}
]
]
(我是从WorldBank Api那里得到的,这有点简化了,您可以找到here的确切响应)。
问题是,我得到了一个对象数组,其中第一个元素是POJO,第二个元素是特定类型的POJO数组。
我发现反序列化的唯一方法是非常通用,导致产生List和Maps。
List<Object> indicators = mapper.readValue(jsonString, new TypeReference<List<Object>>() {});
是否有更好的方法反序列化此JSON以获取数组或列表,其中第一个元素是对象“A”,第二个元素是对象列表“B”?
最佳答案
如果我是你,我会做这样的事情。如果不使用公共基类,就不可能在Java的一个列表中以良好的方式表示数据。就您而言,这很不幸是Object
。您可以通过处理响应列表来有所帮助。
ArrayNode arrayNode = (ArrayNode) mapper.readTree(this.getScrape().getScrapetext());
A a = mapper.readValue(arrayNode.get(0), A.class);
arrayNode.remove(0);
List<B> b = mapper.readValue(arrayNode.toString(), new TypeReference<List<B>>()
{
});