JSON对象的特定属性:写杰克逊自定义解串器在一个层次JSON地图
["emp" : {
"departments": [
"modules": [
{
"tasks": [
{
"resources": 100,
"notes": ""
}
]
}
]
]
}]
我希望上述JSON映射到
List<Emp>
对象。我的对象映射器将如下所示:
List<Emp> emps = Arrays.asList(mapper.readValue(jsonString, Emp[].class));
这种简单的对象映射效果很好。
我的问题是我必须以不同的方式反序列化从JSON到Task
对象的tasks
对象。
我知道我们可以使用jackson编写一个自定义的反序列化器,但这并不能解决我的问题。 我已经为Task
对象编写了一个CustomeDeserializer
,但如下所示将其注册到Object Mapper将尝试将整个JSON(List<Emp>
)作为任务对象进行序列化。
SimpleModule mod = new SimpleModule("MyModule");
ObjectMapper mapper = new ObjectMapper();
mod.addDeserializer(Task.class,
new CustomDeserializer(Task.class));
mapper.registerModule(mod);
有没有办法在分析过程中只为特定属性指定CustomDeserializer
? 或者是否有替代方案?
注意:我无法更改我的DTO来解决此问题。