Jackson控制多态的注解 您所在的位置:网站首页 jsontypeinfo Jackson控制多态的注解

Jackson控制多态的注解

#Jackson控制多态的注解| 来源: 网络整理| 查看: 265

让我们看Jackson控制多态的注解:

@JsonTypeInfo – indicates details of what type information to include in serialization 指出序列化包含的类型信息细节 @JsonSubTypes – indicates sub-types of the annotated type 指出被注解类型的子类 @JsonTypeName – defines a logical type name to use for annotated class 定义被注解类使用的逻辑名称

让我们看使用这三个注解的例子--序列化/反序列化Zoo实体:

public class Zoo { public Animal animal; @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = Dog.class, name = "dog"), @JsonSubTypes.Type(value = Cat.class, name = "cat") }) public static class Animal { public String name; } @JsonTypeName("dog") public static class Dog extends Animal { public double barkVolume; } @JsonTypeName("cat") public static class Cat extends Animal { boolean likesCream; public int lives; } }

当我们序列化的时候:

@Test public void whenSerializingPolymorphic_thenCorrect() throws JsonProcessingException { Zoo.Dog dog = new Zoo.Dog("lacy"); Zoo zoo = new Zoo(dog); String result = new ObjectMapper() .writeValueAsString(zoo); assertThat(result, containsString("type")); assertThat(result, containsString("dog")); }

序列化Dog的结果:

{ "animal": { "type": "dog", "name": "lacy", "barkVolume": 0 } }

参考链接:

https://www.baeldung.com/jackson-annotations



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有