假设您有一个json数组,如下所示:
[
{
"id" : 1,
"first_name" : "Jane",
"last_name" : "Doe"
},
{
"id" : 2,
"first_name" : "John",
"middle_name" : "Q",
"last_name" : "Public",
"birth_year" : 1971
},
{
"id" : 3,
"anonymous_user" : true,
"crm_id" : "abc123"
},
{
"id" : 4,
"first_name" : "Albert",
"last_name" : "Einstein",
"profession" : "Scientist",
"birth_year" : 1879,
"e_equals_mc_squared" : true
}
]
目标是使用杰克逊为POJO编组。我的想法是,我可以有一个类来包含每个K,V对......类似于:
public class myDataObject {
private String key;
private T value;
...
}
也许是容器类:
public class myDataContainer {
private ArrayList<myDataObject> dataList;
...
}
我的问题变成了使用杰克逊看起来像编组的东西? json没有架构,每个json对象可以有一个未指定数量的K,V对,并且键列表也未指定。
这样的事情有用吗?这甚至是正确的方法吗?
ArrayList<myDataContainer> dataList = mapper.readValue(jsonFile, new TypeReference<ArrayList<myDataContainer>() {});
答案 0 :(得分:1)
你的JSON究竟是什么,是一个地图列表 - 以字符串为键,对象为值。
所以,使用杰克逊,你应该可以做到:
ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> data = mapper.readValue(json, new TypeReference<List<Map<String, Object>>>(){});