我正在使用Jersey和Jackson2开发Restful API。开发PUT方法时会遇到问题。我们的PUT方法有点像PATCH方法。它将仅更新在请求正文中接收的属性。
我正在使用ObjectMapper.readerForUpdating()方法进行对象合并。但是此方法仅支持第一级合并。例如:我有一个存在的JSON对象
{
"a": "this is a",
"b": "this is b",
"c": {
"x": 1,
"y": 2
}
}
然后我收到一个JSON对象,就像
{
"a": "this is a new a",
"c": {
"x": 3
}
}
我希望合并的对象应该像这样:
{
"a": "this is a new a",
"b": "this is b",
"c": {
"x": 3,
"y": 2
}
}
但是结果是
{
"a": "this is a new a",
"b": "this is b",
"c": {
"x": 3,
"y": null
}
}
一级属性已正确合并。但从更深层次上讲,它正在执行对象替换。有什么办法可以进行深度合并?
此时,您必须自己手动遍历JSON树(JsonNode
),更新属性,以手动完成此操作。可能会有在Jackson上构建的扩展库来提供对此的支持,但是核心Jackson数据绑定仅具有单个(根JSON对象)级别的“浅”合并。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句