私はJerseyとJackson2を使ってRestful APIを開発しています。PUT メソッドを開発するときに問題が発生します。私たちの PUT メソッドは、PATCH メソッドのようなものです。リクエスト本文で受け取ったプロパティのみを更新します。
オブジェクトのマージを行うために ObjectMapper.readerForUpdating() メソッドを使用しています。ただし、この方法は第 1 レベルのマージのみをサポートします。例: 既存の 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
}
}
第 1 レベルのプロパティは正しくマージされます。しかし、深いレベルでは、オブジェクトの置換を行っています。ディープマージを行う方法はありますか?