杰克逊 - 从文件中一个一个地读取不同的对象
Jackson - Read different object one by one from file
我有这样一个文件:
[{
"messageType": "TYPE_1",
"someData": "Data"
},
{
"messageType": "TYPE_2",
"dataVersion": 2
}]
如您所见,有一个文件包含不同类型的 JSON 对象。我还有一个能够解析这两种类型的 ObjectMapper。我必须一个一个地读取 JSon 个对象(因为这个文件可能非常大)并为每个对象获取正确的对象(Type1Obj 或 Type2Obj)。
我的问题是如何使用 Jackson 实现从文件中一个一个地读取 JSon 对象。
您可以将数组读取为通用 Jackson JSON object 类似于
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonData);
然后使用
遍历数组的所有children
rootNode#elements()
并使用类似于
的 messageType
检查将 JsonNode
children 中的每一个解析为各自的类型
if ("TYPE_1".equals(childNode.get("messageType")) {
Type1Class type1 = objectMapper.treeToValue(childNode, Type1Class.class);
} else // ...
我有这样一个文件:
[{
"messageType": "TYPE_1",
"someData": "Data"
},
{
"messageType": "TYPE_2",
"dataVersion": 2
}]
如您所见,有一个文件包含不同类型的 JSON 对象。我还有一个能够解析这两种类型的 ObjectMapper。我必须一个一个地读取 JSon 个对象(因为这个文件可能非常大)并为每个对象获取正确的对象(Type1Obj 或 Type2Obj)。
我的问题是如何使用 Jackson 实现从文件中一个一个地读取 JSon 对象。
您可以将数组读取为通用 Jackson JSON object 类似于
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonData);
然后使用
遍历数组的所有childrenrootNode#elements()
并使用类似于
的messageType
检查将 JsonNode
children 中的每一个解析为各自的类型
if ("TYPE_1".equals(childNode.get("messageType")) {
Type1Class type1 = objectMapper.treeToValue(childNode, Type1Class.class);
} else // ...