杰克逊 - 从文件中一个一个地读取不同的对象

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 // ...