【问题标题】:Jackson - Read different object one by one from file杰克逊 - 从文件中一一读取不同的对象
【发布时间】:2019-06-05 08:54:41
【问题描述】:

我有一个这样的文件:

[{
    "messageType": "TYPE_1",
    "someData": "Data"
},
{
    "messageType": "TYPE_2",
    "dataVersion": 2
}]

如您所见,有一个文件包含不同类型的 JSON 对象。我还有一个能够解析这两种类型的 ObjectMapper。我必须一个一个地读取 JSon 对象(因为这个文件可能非常大)并为每个对象获取正确的对象(Type1Obj 或 Type2Obj)。

我的问题是如何使用 Jackson 从文件中一一读取 JSon 对象。

【问题讨论】:

标签: java jackson objectmapper


【解决方案1】:

您可以将数组读取为类似于

的通用 Jackson JSON 对象
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonData);

然后使用遍历数组的所有子节点

rootNode#elements()

并使用messageType 的检查将每个JsonNode 子项解析为相应的类型,类似于

if ("TYPE_1".equals(childNode.get("messageType")) {
    Type1Class type1 = objectMapper.treeToValue(childNode, Type1Class.class);
} else // ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多