我有一个像这样的文件:
[{
"messageType": "TYPE_1",
"someData": "Data"
},
{
"messageType": "TYPE_2",
"dataVersion": 2
}]
如您所见,有一个文件包含不同类型的JSON对象。我也有一个ObjectMapper能够解析这两种类型。我必须逐一读取JSon对象(因为此文件可能非常大),并为每个对象获取正确的对象(Type1Obj或Type2Obj)。
我的问题是我要如何用Jackson来从文件中逐个读取JSon对象。
答案 0 :(得分:0)
您可以将数组读取为类似于以下内容的通用Jackson JSON对象
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonData);
然后使用遍历数组的所有子项
rootNode#elements()
并使用类似于{p>的检查JsonNode
,将messageType
个子节点中的每个子节点解析为各自的类型
if ("TYPE_1".equals(childNode.get("messageType")) {
Type1Class type1 = objectMapper.treeToValue(childNode, Type1Class.class);
} else // ...