我试图反序列化一个相当复杂的POJO JSON,我需要在其中定义一个特定的属性名称来进行类型解析,但是找不到这个相当简单的功能.
假设一个类如下:
class Example {
int id;
Map<String,Object> extras;
}
Run Code Online (Sandbox Code Playgroud)
和Jackson正确地将POJO序列化为JSON,其中地图被序列化为键值映射,就像预期的那样:
{...
id:5,
extras:{object1:{...}, object2:{...}}
...}
Run Code Online (Sandbox Code Playgroud)
现在我想告诉杰克逊根据实际类型明确地反序列化附加对象.所以我需要告诉Jackson以某种方式将"object1"映射到Type 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5226 次 |
| 最近记录: |