java使用Jackson解析非同构JSON对象数组
在这种情况下,我需要解析不完全相同的JSON对象数组
例如:
[
{ "type": "type1", ..... type1 contents .... },
{ "type": "type2", ..... type2 contents .... },
....
{ "type": "type1", ..... type1 contents .... }
]
类型的数量是有限的,并且每个类型的内容都可以很好地定义,但是不可能定义一个单一类型的对象来保存内容
有没有办法和Jackson一起解析它们
另外,如果我能帮助的话,我会尽量避免编写自定义解析器
# 1 楼答案
我会用
com.fasterxml.jackson.databind.JsonNode
此类有大量实用方法可供使用
或特定于您可以使用的阵列:
com.fasterxml.jackson.databind.node.ArrayNode
编辑
抱歉,我误解了您的问题,您可以使用
@JsonTypeInfo
进行多态序列化/反序列化:以下是文件:
https://github.com/FasterXML/jackson-docs/wiki/JacksonPolymorphicDeserialization
希望这有帮助
结果是:
# 2 楼答案
我们可以使用列表。类将此JSON数组映射为包含内容的不同类型的对象。它将返回LinkedHashMaps的列表。不同的内容将映射到LinkedHashMap