假设您有一个如下所示的 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
}
]
目标是使用 Jackson 来编码 POJO。我的想法是我可以有一个类来包含每个 K,V 对..类似于:
public class myDataObject {
private String key;
private T value;
...
}
也许还有一个容器类:
public class myDataContainer {
private ArrayList<myDataObject> dataList;
...
}
我的问题是使用 Jackson 进行编码是什么样的? json 没有模式,每个 json 对象可以有未指定数量的 K,V 对,并且键列表也未指定。
这样的东西有用吗?这是正确的方法吗?
ArrayList<myDataContainer> dataList = mapper.readValue(jsonFile, new TypeReference<ArrayList<myDataContainer>() {});
最佳答案
JSON 的真正含义是一个映射列表 - 以字符串作为键,以对象作为值。
因此,使用 Jackson,您应该能够执行以下操作:
ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> data = mapper.readValue(json, new TypeReference<List<Map<String, Object>>>(){});
关于java - 如何使用 Jackson 编码包含未知数量 KV 对的 JSON 对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45667783/