gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:13:36 25 4
gpt4 key购买 nike

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

假设一个类:

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

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

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

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

这可能吗?谢谢。

最佳答案

有很好的指导如何处理它:http://www.cowtowncoder.com/blog/archives/2010/03/entry_372.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);
}

关于java - Jackson 自定义属性名称到多态属性的类型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12931838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com