栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JSON嵌套类数据绑定

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSON嵌套类数据绑定

可能,但是键入JSON应该看起来像

"type":"com.test.Cat"
(完全限定名称)
Abstract类

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="type")public abstract class AAnimal {}

子类

public class Cat extends AAnimal{   public String name;} public class Dog extends AAnimal{   public String name;}

现在,对于json

"{ "type":"com.test.Dog", "name":"gav-gav" }"

这将是

Dog
实例

"{ "type":"com.test.Cat", "name":"mew-mew" }"

这将是

Cat
例如
编辑
在这种情况下使用
JsonTypeInfo.As.EXTERNAL_PROPERTY
。例

public class Container {   private String type;   private AAnimal animal;   public String getType()   {      return type;   }   public void setType(String type)   {      this.type = type;   }   public AAnimal getAnimal()   {      return animal;   }   @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.EXTERNAL_PROPERTY, property="type")   public void setAnimal(AAnimal animal)   {      this.animal = animal;   }}

动物类

public abstract class AAnimal {   public String name;}public class Cat extends AAnimal{}public class Dog extends AAnimal{}

对于

"{"type":"com.test.Cat", "animal" : {"name":"cat" }}"

它运作良好。
PS。 您也可以使用

use=JsonTypeInfo.Id.MINIMAL_CLASS
,在这种情况下,您只能使用标准名称
EDIT2的一部分

   @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.EXTERNAL_PROPERTY, property="type")   @JsonSubTypes({ @Type(value = Cat.class, name = "cat"), @Type(value = Dog.class, name = "dog") })   public void setAnimal(AAnimal animal)   {      this.animal = animal;   }

适用于

"{"type":"cat", "animal" : {"name":"cat" }}"


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号