gpt4 book ai didi

java - Jackson,如何为接口(interface)字段定义默认类型实现?

转载 作者:行者123 更新时间:2023-12-01 18:26:21 70 4
gpt4 key购买 nike

我需要将 JSON 反序列化为带有 Serialized 字段的 Java 类。在下面的 Java 类中,value 字段是一个接口(interface),其思想是 View 可以发送以下类型的值:StringDoubleLongArrayList。如果我将值字段的类型从 Serialized 更改为 Object,它将按预期工作。

public class UpdateAttribute implements Serializable {
//..
// There is something like: @JsonImplType(Object.class)
private Serializable value;
}

我的问题是,有这样的方法可以为值字段定义默认类类型吗?类似于:@JsonImplType(Object.class)

最佳答案

此问题的解决方案是使用 Jackson-databind 模块中的注释。这里提出了类似的问题:Jackson - How to specify a single implementation for interface-referenced deserialization? .

public class UpdateAttribute implements Serializable {
//..
@JsonDeserialize(as = Object.class)
private Serializable value;
}

但是,有一个细节需要考虑。 UpdateAttributesetValue 方法不能使用 Serialized 参数声明。因为 Jackson 不知道从 ObjectSerialized 的转换。因此,最终的类应该如下所示:

public class UpdateAttribute implements Serializable {

@JsonDeserialize(as = Object.class)
private Serializable value;

public void setValue(Object value) {
this.value = (Serializable) value;
}
}

关于java - Jackson,如何为接口(interface)字段定义默认类型实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60228124/

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