一汁三菜

自分が楽しいと思うこと、マラソン、旅行、その他日々の記録をしたい。

RFC 7386: JSON Merge Patch

例を見れば分かる、と言えばそれはそうなのだけれども、あまりにも簡潔なRFCが出ました。HTTPのPATCHメソッドを使ってJSONのドキュメントを操作する方法を規定しています。

一言で言えば、リクエストラインで指定したパスにあるJSONドキュメントに対して、リクエスト中に与えたJSONドキュメントのキーで指定された値で置換します。値が無い場合は追加します。nullを指定すると消します。

{
 "a": "foo",
 "b": "bar",
 "c": {
  "d": "baz"
 }
}

というJSONに対して、

PATCH /document
Host: example.com
Content-Type:application/merge-patch+json

{
 "a": "hoge",
 "b": null,
 "c": {
  "d": "fuga",
  "e": "moge"
 }
}

というリクエストを与えると、

{
 "a": "hoge",
 "c": {
  "d": "fuga",
  "e": "moge"
 }
}

になる、という具合です。

多分、ここに書いてある下手な説明を読むよりも、RFC中の"3. Example"の章を見た方が一目瞭然です。