JSON对象:
["emp" : {
"departments": [
"modules": [
{
"tasks": [
{
"resources": 100,
"notes": ""
}
]
}
]
]
}]
["emp" : {
"departments": [
"modules": [
{
"tasks": [
{
"resources": 100,
"notes": ""
}
]
}
]
]
}]
我想将上面的JSON映射到对象。我的对象映射器看起来像:
List<Emp>
这个简单的对象映射器运行良好
我的问题是我必须以不同的方式将
对象从JSON反序列化到List<Emp> emps = Arrays.asList(mapper.readValue(jsonString, Emp[].class));
List<Emp> emps = Arrays.asList(mapper.readValue(jsonString, Emp[].class));
对象。
我知道我们可以使用jackson编写自定义反序列化程序,但这并不能解决我的问题。
我为tasks
对象编写了Task
,但如下所示将此注册到Object Mapper会尝试将整个JSON(CustomeDeserializer
)序列化为任务对象。{{1} }
Task
List<Emp>
有没有办法在解析过程中仅为特定属性指定?
或者有替代方案吗?
注意:我无法更改我的DTO以解决此问题。
答案 0 :(得分:0)
使用Jackson解析JSON有几种选择。您可以使用Jacksons Tree model
解析或streaming API
。两者都需要比mapper.readValue(jsonString, Emp[].class)
更多的代码,但它比实现自己的JSON解析要好得多。您可以在杰克逊文档here