首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jackson的@JsonTypeInfo(use = Id.CUSTOM,include = As.PROPERTY,property = "type")读取除"type“之外的所有JSON字段

Jackson的@JsonTypeInfo(use = Id.CUSTOM,include = As.PROPERTY,property = "type")读取除"type“之外的所有JSON字段
EN

Stack Overflow用户
提问于 2016-09-27 09:39:16
回答 1查看 10.2K关注 0票数 6

我遍历了每一行代码,但我认为这就是Jackson在内部处理多态性的方式。

使用DogCat扩展Animal的经典示例:

代码语言:javascript
复制
@JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type")
@JsonTypeIdResolver(AnimalTypeIdResolver.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class Animal implements Serializable {
    public AnnotatorBundleConfig(String name) {
        super();
        this.name = name;
    }

狗类:

代码语言:javascript
复制
public class DogAnimal extends Animal {
    @JsonCreator
    public DogAnimal(
        @JsonProperty(value="name", required=true) String name,
        @JsonProperty(value="bark_decibel") int bark_decibel)
    {
    super(name);
    this.bark_decibel = bark_decibel;}

cat类:

代码语言:javascript
复制
public class CatAnimal extends Animal {
    @JsonCreator
    public CatAnimal(
        @JsonProperty(value="name", required=true) String name,
        @JsonProperty(value="meow_level") int meow_level)
    {
    super(name);
    this.meow_level = meow_level;}

AnimalTypeIdResolver是一个典型的扩展了AbstractTypeIdResolver的TypeIdResolver。

出于一些非常奇怪的原因,bark_decibelmeow_level是从JSON反序列化的,但是type是作为null加入的。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-27 10:08:26

@JsonTypeInfo设置visible=true

代码语言:javascript
复制
@JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type", visible=true)

参考this post

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39714780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档