Jackson 自定义属性名称到多态属性的类型映射

2023-12-26

我正在尝试反序列化一个相当复杂的 POJOs JSON,其中我需要定义一个特定的属性名称来类型解析,但未能找到这个相当简单的功能。

假设一个类:

class Example {
  int id;
  Map<String,Object> extras;
}

Jackson 正在将 POJO 正确序列化为 JSON,其中映射被序列化为键值映射,就像预期的那样:

{...
id:5,
extras:{object1:{...}, object2:{...}}
...}

现在我想告诉杰克逊按实际类型显式反序列化额外对象。所以我需要以某种方式告诉 Jackson 将“object1”映射到类型 A,将“object2”映射到类型 B。

这可能吗?谢谢。


有一个很好的指南如何处理它:http://www.cowtowncoder.com/blog/archives/2010/03/entry_372.html http://www.cowtowncoder.com/blog/archives/2010/03/entry_372.html

还有另一个教程:
http://programmerbruce.blogspot.de/2011/05/deserialize-json-with-jackson-into.html http://programmerbruce.blogspot.de/2011/05/deserialize-json-with-jackson-into.html

可以修改第二个教程中的第 6 个示例,解串器将具有类似于以下内容的循环:

Map<String, Class> types = ...// map of supported types
JsonToken token = jsonParser.nextToken();
if(token == JsonToken.FIELD_NAME){ // "object1" etc.
    String name = jsonParser.getCurrentName();
    Class type = types.get(name);
    Object object = jsonParser.readValueAs(type);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jackson 自定义属性名称到多态属性的类型映射 的相关文章

随机推荐