【发布时间】:2014-08-23 16:53:13
【问题描述】:
我使用@JsonTypeInfo 和@JsonSubTypes 来映射基于给定属性的解析子类。这是我想要解析的示例 JSON 的人为示例。
{ "animals": [
{ "type" : "dog", "name" : "spike" }
,{ "type" : "cat", "name" : "fluffy" }
]}
使用这个作为类
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME
,include = JsonTypeInfo.As.PROPERTY
,property = "type")
@JsonSubTypes({
@Type(value = Cat.class, name = "cat"),
@Type(value = Dog.class, name = "dog") })
abstract class Animal {
public String name;
{
class Dog extends Animal { }
class Cat extends Animal { }
但是,当 JSON 包含我想忽略的类型时,就会出现问题。例如,如果我有一个我不想反序列化为对象的新类型“猪”:
{ "animals": [
{ "type" : "dog", "name" : "spike" }
,{ "type" : "cat", "name" : "fluffy" }
,{ "type" : "pig", "name" : "babe" }
]}
并尝试解析它,它会给我这个错误:
无法将类型 id 'pig' 解析为 [simple type, class 动物]
我该如何解决这个问题,以便仅映射“狗”和“猫”类型的动物,而忽略其他所有内容?
【问题讨论】:
-
你的问题解决了吗?
标签: jackson