gpt4 book ai didi

jackson - 在某些(领域)情况下隐藏 jackson 类型信息?

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

例子

Java:

    @JsonTypeInfo(  
use = JsonTypeInfo.Id.MINIMAL_CLASS,
include = JsonTypeInfo.As.PROPERTY,
property = "@type")
public class Pet{
String name;
}

public class Dog extends Pet{}
public class Cat extends Pet{}

public class PetHouse {
List<Pet> pets;
}

public class BarkingData {
int decibels;
Dog dog;
}

JSON 序列化

    petHouse = {
pets :
[
{'@type': 'Dog', 'name':'Droopy'},
{'@type': 'Cat', 'name':'Scratchy'},
{'@type': 'Dog', 'name':'Snoopy'}
]
}

barkingData = {
decibels:15,
dog:{'@type':'Dog', 'name':'Droopy'}
}

问题BarkingData 类有一个 Dog 类型的字段(猫不会叫,对吧)。对于可以从声明字段“提示”该类型的实例,是否可以告诉 Jackson 不要包含 typeInfo ?

这样 Barking 数据的输出看起来像:

    barkingData = {
decibels:15,
dog:{'name':'Droopy'}
}

最佳答案

您认为您知道此字段的动态类型(实际类型),因为静态类型是 Dog而不是 Animal仅在没有 Dog 的子类时有效.如果你制作Dogfinal ,然后 Jackson 知道它可以安全地省略类型信息。

此外,对于静态类型的字段,您可以以更复杂的方式覆盖 Jackson 的类型信息设置 Dog,通过添加 @JsonTypeInfo Dog 定义的注释类。

关于jackson - 在某些(领域)情况下隐藏 jackson 类型信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17283466/

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