JSON PointerとJSON Patch
XMLの操作を標準化した物としてDOMやらXPathやら各種規格が存在するわけですが、JSONでもそのようなよく利用される操作を共通化した物が存在すると便利な場面もあるかもしれません。
そこでIETFのappsawg WGで提案されているのが、JSON PointerとJSON Patchです。
まだ提案されたばかりでほとんど何も決まっていないのが実情なのですが、もしRFCとして公開されるほどの物が出来上がれば、標準的な枠組みとしては強力な物になるかもしれません。
JSON Pointer
JSON PointerはXMLで言う所のXLinkとXPathの機能を併せ持ったような物で、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で指定された位置のオブジェクトが、指定されたオブジェクトと同値であるかどうかを判定します。