一汁三菜

インターネットのインフラよりな技術の話題、Web周りの技術的な話題、趣味のマラソン、旅行、その他日々の記録をしています。

JSON PointerとJSON Patch

XMLの操作を標準化した物としてDOMやらXPathやら各種規格が存在するわけですが、JSONでもそのようなよく利用される操作を共通化した物が存在すると便利な場面もあるかもしれません。

そこでIETFのappsawg WGで提案されているのが、JSON PointerJSON Patchです。

まだ提案されたばかりでほとんど何も決まっていないのが実情なのですが、もしRFCとして公開されるほどの物が出来上がれば、標準的な枠組みとしては強力な物になるかもしれません。

JSON Pointer

JSON PointerはXMLで言う所のXLinkXPathの機能を併せ持ったような物で、JSONの構造の中のあるオブジェクトを表すのに用いられたり、URL中においてfragment identifierとして使われる事でJSONの構造中の特定のオブジェクトを指し示すのに使われる事を想定しています。

JSON Patch

JSON Patchは、JSONで書かれた文書に新たにオブジェクトを追加したり、削除したりする為の仕様です。HTTPのPATCHリクエストと併用すると、RESTfulにJSON文書の操作を出来るようにする事が標準的な枠組みとして出来るようになるという事が見込まれています。

JSON Patchで定義されているJSON文書の操作には、add, remove, replace, move, testの5つのoperationが定義されています。それぞれ簡単に解説します。

add
JSON Pointerで指定された位置に指定されたオブジェクトを挿入します。
remove
JSON Pointerで指定された位置のオブジェクトを削除します。
replace
JSON Pointerで指定された位置のオブジェクトを指定されたオブジェクトで置き換えます。
move
JSON Pointerで指定された位置のオブジェクトを、もう一つのJSON Pointerで指定された位置に移動します。
test
JSON Pointerで指定された位置のオブジェクトが、指定されたオブジェクトと同値であるかどうかを判定します。