gpt4 book ai didi

java - Jackson 解析多种概率但属性名称相同的对象

转载 作者:行者123 更新时间:2023-12-02 03:40:40 24 4
gpt4 key购买 nike

我在 Android 项目中使用 Jackson 库来解析 json 响应。

在我的例子中,返回的 json 数组由每个不同结构的对象组成。我已经创建了 3 个 VO 类(class),但我想知道是否可以告诉 Jackson 试一试,直到成功为止。

以下内容可以解决问题,但这是禁止的,相同的@JsonProperty但有很多可能性:

@JsonProperty("Object")
public Class1 object1;
@JsonProperty("Object")
public Class2 object2;
@JsonProperty("Object")
public Class3 object3;

还有其他选择吗?

最佳答案

我建议编写一个自定义反序列化器。您可以在这里找到相关信息:http://www.baeldung.com/jackson-deserialization

官方文档在这里:http://wiki.fasterxml.com/JacksonHowToCustomDeserializers

替代方案:

如果这 3 个对象通过实现公共(public)接口(interface)相互关联,您可以这样做:

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
public interface MyObjectInterface {}

但是您将需要调整 JSON 以包含 @class 属性。您没有说明这是否可能。

替代方案 2:

如果您已有 type 属性,则可以执行以下操作:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes(
{@JsonSubTypes.Type(value = MyObject1.class, name = "OBJECT_1"),
@JsonSubTypes.Type(value = MyObject2.class, name = "OBJECT_2"),
@JsonSubTypes.Type(value = MyObject3.class, name = "OBJECT_3")}
)
public interface MyObjectInterface {}

关于java - Jackson 解析多种概率但属性名称相同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36869790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com