用Jackson将根名称反序列化为子类型

时间:2019-07-22 19:33:00

标签: java json jackson

我有以下json:

[
    {
        "dog":{
            "noise":"bark",
            "dogfood":"something"
        }
    },
    {
        "cat":{
            "noise":"meow",
            "catfood":"iams"
        }
    }
]

和以下型号:

public abstract class Animal {
}

public class Dog {
    private String noise;
    private String dogFood;
}

public class Cat {
    private String noise;
    private String catFood;
}

如何根据每个元素的根名是dog还是cat,通过继承反序列化json数组中的每个项目?

1 个答案:

答案 0 :(得分:1)

有人在杰克逊的Github页面上寻求与您面临的问题相同的解决方案,请参见:https://github.com/FasterXML/jackson-databind/issues/1627

一个暂时的解决方法是自定义反序列化器,其中类中的字段应包含它是什么类型的类,以便可以对其进行反序列化。解决方法请参见此处:https://stackoverflow.com/a/50013090/6777695