繁体   English   中英

无法通过杰克逊从泽西岛处理JSON上的多态类型反序列化

[英]Unable to process JSON from Jersey via Jackson on Deserialization of polymorphic type

我使用JsonTypeInfo将json正确反序列化为适当的子类型

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
public abstract class Car {

}

public class Audi extends Car {
   // Getters and Setters
}

public class Merc extends Car {
   // Getters and Setters
}

对于以下结构Map<String, Car> info

这是我的示例JSON

{
   info: {
      "xyz": {
         type: "Audi"
      },
      "abc": {
         type: "Merc" 
      }
   }
}

上面的JSON无法正确反序列化,并显示错误400:无法处理JSON。 我在这里想念什么?

两件事,JSON是不正确的,因为属性需要在引号之间:

{
   "info": {
      "xyz": {
         "type": "Audi"
      },
      "abc": {
         "type": "Merc" 
      }
   }
} 

第二,尝试将此注释添加到抽象类中:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({ 
    @JsonSubTypes.Type(value = Audi.class, name = "Audi"), 
    @JsonSubTypes.Type(value = Merc.class, name = "Merc")})
abstract class Car {

它基本上指示子类型和关联的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM