4. Operations (操作)
4. Operations (操作)
操作オブジェクト (Operation Object) は, 実行する操作を示す値を持つ "op" メンバーを正確に 1 つ持たなければなりません。その値は "add", "remove", "replace", "move", "copy", または "test" のいずれかでなければなりません; 他の値はエラーです。各オブジェクトのセマンティクスは以下に定義されています。
さらに, 操作オブジェクトは正確に 1 つの "path" メンバーを持たなければなりません。そのメンバーの値は, 操作が実行されるターゲット文書 (Target Document) 内の場所 ("ターゲット位置", Target Location) を参照する JSON-Pointer 値 [RFC6901] を含む文字列です。
他の操作オブジェクトメンバーの意味は操作によって定義されます (以下のサブセクションを参照)。問題の操作に対して明示的に定義されていないメンバーは無視されなければなりません (つまり, 未定義のメンバーがオブジェクトに現れなかったかのように操作が完了します)。
JSON オブジェクト内のメンバーの順序は重要ではないことに注意してください; したがって, 以下の操作オブジェクトは等価です:
{ "op": "add", "path": "/a/b/c", "value": "foo" }
{ "path": "/a/b/c", "op": "add", "value": "foo" }
{ "value": "foo", "path": "/a/b/c", "op": "add" }
操作は JSON 文書によって表されるデータ構造に適用されます, つまり, あらゆるアンエスケープ ([RFC4627], セクション 2.5 を参照) が行われた後です。