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來解決此問題。