ObjectAdapter クラス

定義

JSON パッチ ドキュメントで実行できる操作を定義します。

public ref class ObjectAdapter : Microsoft::AspNetCore::JsonPatch::Adapters::IObjectAdapter
public ref class ObjectAdapter : Microsoft::AspNetCore::JsonPatch::Adapters::IObjectAdapterWithTest
public class ObjectAdapter : Microsoft.AspNetCore.JsonPatch.Adapters.IObjectAdapter
public class ObjectAdapter : Microsoft.AspNetCore.JsonPatch.Adapters.IObjectAdapterWithTest
type ObjectAdapter = class
    interface IObjectAdapter
type ObjectAdapter = class
    interface IObjectAdapterWithTest
    interface IObjectAdapter
Public Class ObjectAdapter
Implements IObjectAdapter
Public Class ObjectAdapter
Implements IObjectAdapterWithTest
継承
ObjectAdapter
実装

コンストラクター

ObjectAdapter(IContractResolver, Action<JsonPatchError>, IAdapterFactory)

ObjectAdapter の新しいインスタンスを初期化します。

ObjectAdapter(IContractResolver, Action<JsonPatchError>)

ObjectAdapter の新しいインスタンスを初期化します。

プロパティ

AdapterFactory

を取得または設定します。 IAdapterFactory

ContractResolver

Newtonsoft.Json.Serialization.IContractResolver を取得または設定します。

LogErrorAction

ログ JsonPatchError記録のアクション。

メソッド

Add(Operation, Object)

"追加" 操作は、ターゲットの場所が参照する内容に応じて、次のいずれかの関数を実行します。

o ターゲットの場所で配列インデックスが指定されている場合は、指定したインデックス位置の配列に新しい値が挿入されます。

o ターゲットの場所にまだ存在しないオブジェクト メンバーが指定されている場合は、新しいメンバーがオブジェクトに追加されます。

o ターゲットの場所に存在するオブジェクト メンバーが指定されている場合は、そのメンバーの値が置き換えられます。

操作オブジェクトには、追加する値を指定するコンテンツを持つ "value" メンバーが含まれている必要があります。

例:

{ "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] }

操作が適用されると、ターゲットの場所で次のいずれかを参照する必要があります。

o ターゲット ドキュメントのルート - 指定した値がターゲット ドキュメントのコンテンツ全体になります。

o 既存のオブジェクトに追加するメンバー - 指定された値が指定された場所でそのオブジェクトに追加されます。 メンバーが既に存在する場合は、指定した値に置き換えられます。

o 既存の配列に追加する要素 - 指定された値が指定された位置にある配列に追加されます。 指定したインデックスの上にある要素はすべて、1 つの位置を右にシフトします。 指定したインデックスは、配列内の要素の数より大きくすることはできません。 "-" 文字を使用して配列の末尾にインデックスを付ける場合 (「RFC6901」を参照)、これは配列に値を追加する効果があります。

この操作は既存のオブジェクトと配列に追加するように設計されているため、多くの場合、そのターゲットの場所は存在しません。 したがって、ポインターのエラー処理アルゴリズムが呼び出されますが、この仕様では、"追加" ポインターのエラー処理動作を定義して、そのエラーを無視し、指定された値を追加します。

ただし、オブジェクト自体またはそれを含む配列は存在する必要があり、その場合はエラーのままです。 たとえば、次のドキュメントで始まる "/a/b" というターゲットの場所を持つ "add" です。

{ "a": { "foo": 1 } }

はエラーではありません。これは、"a" が存在し、"b" がその値に追加されるためです。 このドキュメントでは、次のエラーが発生します。

{ "q": { "bar": 2 } }

"a" が存在しないためです。

Copy(Operation, Object)

"コピー" 操作は、指定した場所にある値をターゲットの場所にコピーします。

操作オブジェクトには、"from" メンバーが含まれている必要があります。これは、値のコピー元となるターゲット ドキュメント内の場所を参照する JSON ポインター値を含む文字列です。

操作を成功させるには、"from" の場所が存在する必要があります。

例:

{ "op": "copy", "from": "/a/b/c", "path": "/a/b/e" }

この操作は、"from" メンバーで指定された値を使用して、ターゲットの場所での "追加" 操作と機能的に同じです。

注: 機能的には同じですが、パフォーマンス上の理由から で指定された値を使用して add を呼び出すわけではありません (同じ要件の複数のチェック)。

Move(Operation, Object)

"移動" 操作では、指定した場所にある値が削除され、ターゲットの場所に追加されます。

操作オブジェクトには、"from" メンバーが含まれている必要があります。これは、値の移動元となるターゲット ドキュメント内の場所を参照する JSON ポインター値を含む文字列です。

操作を成功させるには、"from" の場所が存在する必要があります。

例:

{ "op": "move", "from": "/a/b/c", "path": "/a/b/d" }

この操作は、"from" の場所に対する "削除" 操作と機能的に同じです。その直後に、削除された値を持つターゲットの場所で "追加" 操作が実行されます。

"from" の場所は、"path" の場所の適切なプレフィックスにすることはできません。つまり、場所を子の 1 つに移動することはできません。

Remove(Operation, Object)

"削除" 操作では、ターゲットの場所にある値が削除されます。

操作を成功させるには、ターゲットの場所が存在する必要があります。

例:

{ "op": "remove", "path": "/a/b/c" }

配列から要素を削除すると、指定したインデックスの上にある要素が 1 つ左にシフトされます。

Replace(Operation, Object)

"置換" 操作は、ターゲットの場所にある値を新しい値に置き換えます。 操作オブジェクトには、置換値を指定するコンテンツを持つ "value" メンバーが含まれている必要があります。

操作を成功させるには、ターゲットの場所が存在する必要があります。

例:

{ "op": "replace", "path": "/a/b/c", "value": 42 }

この操作は、値の "削除" 操作と機能的に同じであり、その直後に置換値を持つ同じ場所に "追加" 操作が続きます。

注: 機能的には同じですが、パフォーマンス上の理由から remove + add は呼び出しません (同じ要件の複数のチェック)。

Test(Operation, Object)

JSON パッチ ドキュメントで実行できる操作を定義します。

適用対象