如何反序列化不同类型的 JSON 数组?
Posted
技术标签:
【中文标题】如何反序列化不同类型的 JSON 数组?【英文标题】:How to deserialize JSON array with different types? 【发布时间】:2022-01-19 14:56:02 【问题描述】:我有一个这样的 JSON 数组:
[
"0",
"number": 1,
"field": "value"
,
"number": 2,
"field": "value"
]
数组的第一个元素是一个字符串。
是否可以使用 FasterXML Jackson 对其进行反序列化?
我知道如何处理不同的对象。
我需要使用@JsonSubTypes
(这里是一个例子https://***.com/a/38877862/2564509)
这个数组的问题是第一个元素是String类型的。
【问题讨论】:
我没有准备好对其进行测试,但与链接解决方案相比,我看到的“唯一”问题是 String 是最终的,不能用于扩展自定义接口。但是 1) 你真的需要一个单一的自定义界面(例如 List @GPI 是的,String 类是最终的。因此,我无法为 String 和其他类提供通用接口。 1)我从问题中的 API 获得一个数组。我无法改变它。 2)我没试过。所以这是下一个尝试。 3) 就我而言,这不是一个好方法,因为其他元素(对象)与字符串无关(它们更具体,如用户数据)。 我的错,在关闭时跳了枪。 【参考方案1】:警告:你的情况是一个不幸的边缘情况。 因此, 解决方案可能并不完美。
这行得通, 但并不美妙:
-
首先,反序列化为
List<Object>
。
在您的情况下,这将产生一个包含三个元素的列表;
细绳,
LinkedHashMap,
和 LinkedHashMap
接下来,处理数组中的每个元素,然后,
基于元素类型的过程;
一个 String 将是你的 String 元素,
LinkedHashMap 将代表您的数字字段类。
【讨论】:
以上是关于如何反序列化不同类型的 JSON 数组?的主要内容,如果未能解决你的问题,请参考以下文章