我有如下 JSON:
[{
'kind':'1',
'value1': 'foo',
'value2': 'bar',
...
},
{
'kind':'2',
'value1': 'foo',
'value2': 'bar',
...
}
..]
基本上是具有相同变量的对象列表。在我的代码中,我想创建一个 A 类的 ArrayList,其中包含这些对象。但是,我希望每个对象都属于一或二子类,具体取决于“种类”值。
我怎样才能做到这一点?
谢谢!
这就是杰克逊所说的“多态类型处理”。这里有一个很好的解释如何做到这一点。您需要告诉 Jackson 在序列化时将类名放入 JSON 中,并在反序列化时使用该类名。这是通过注释完成的:
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME,
include=JsonTypeInfo.As.PROPERTY, property="kind")
[来源:@StaxMan(下)。]
如果您无法控制 JSON 格式,则可以使用 Jackson 将其反序列化为一些常见的中间对象,然后编写代码从中创建所需的子类对象。或者,使用 json.org 库将 JSON 字符串反序列化为 org.json.JSONObject,然后编写代码以基于 JSONObject 的属性构造所需的对象。