我想将一个JSON字符串转换为Java对象,但这个对象的类包含抽象字段,Jackson无法实例化它们,也不能产生对象。有没有最简单的方法告诉Jackson关于某个抽象类的默认实现?
setDefault(AbstractAnimal.class, Cat.class);
或者根据JSON属性名称决定实现类,例如对于JSON对象:
{
...
cat: {...}
...
}
我会简单写出:setImpl("cat", Cat.class);
我知道在Jackson中可以将类信息嵌入JSON中,但我不想让我使用的JSON格式变得复杂。我想通过设置默认实现类或属性名称('cat')来决定要使用哪个类 - 就像在XStream库中编写的那样:
xStream.alias("cat", Cat.class);
有没有一种方法可以这样做,特别是在一行内,或者需要更多的代码?
class C { Animal animal; }
我想实例化C,其中Animal是抽象的,我想将一个继承自Animal的Cat放入这个字段中。 - Marcin@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "type")
。请参见https://dev59.com/5VwY5IYBdhLWcg3wU2TA#32777371中的评论。 - koppor