Freigeben über


ObjectAdapter Klasse

Definition

Definiert die Vorgänge, die für ein JSON-Patchdokument ausgeführt werden können.

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
Vererbung
ObjectAdapter
Implementiert

Konstruktoren

ObjectAdapter(IContractResolver, Action<JsonPatchError>, IAdapterFactory)

Initialisiert eine neue Instanz von ObjectAdapter.

ObjectAdapter(IContractResolver, Action<JsonPatchError>)

Initialisiert eine neue Instanz von ObjectAdapter.

Eigenschaften

AdapterFactory

Ruft die ab oder legt sie fest. IAdapterFactory

ContractResolver

Ruft den Newtonsoft.Json.Serialization.IContractResolver ab oder legt diesen fest.

LogErrorAction

Aktion zum Protokollieren JsonPatchErrorvon .

Methoden

Add(Operation, Object)

Der Vorgang "hinzufügen" führt eine der folgenden Funktionen aus, je nachdem, auf was der Zielspeicherort verweist:

o Wenn der Zielspeicherort einen Arrayindex angibt, wird am angegebenen Index ein neuer Wert in das Array eingefügt.

o Wenn der Zielspeicherort ein Objektmember angibt, das noch nicht vorhanden ist, wird dem Objekt ein neues Element hinzugefügt.

o Wenn der Zielspeicherort ein Objektmember angibt, das vorhanden ist, wird der Wert dieses Elements ersetzt.

Das Vorgangsobjekt MUSS ein "value"-Element enthalten, dessen Inhalt den hinzuzufügenden Wert angibt.

Beispiel:

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

Wenn der Vorgang angewendet wird, MUSS der Zielspeicherort auf einen der folgenden Verweisen verweisen:

o Der Stamm des Zieldokuments, wobei der angegebene Wert zum gesamten Inhalt des Zieldokuments wird.

o Ein Element, das einem vorhandenen Objekt hinzugefügt werden soll, wobei der angegebene Wert diesem Objekt an der angegebenen Position hinzugefügt wird. Wenn der Member bereits vorhanden ist, wird es durch den angegebenen Wert ersetzt.

o Ein Element, das einem vorhandenen Array hinzugefügt werden soll, wobei der angegebene Wert dem Array an der angegebenen Position hinzugefügt wird. Alle Elemente am oder oberhalb des angegebenen Indexes werden um eine Position nach rechts verschoben. Der angegebene Index DARF NICHT größer als die Anzahl der Elemente im Array sein. Wenn das Zeichen "-" verwendet wird, um das Ende des Arrays zu indizieren (siehe [RFC6901]), hat dies den Effekt, dass der Wert an das Array angefügt wird.

Da dieser Vorgang zum Hinzufügen zu vorhandenen Objekten und Arrays konzipiert ist, ist der Zielspeicherort häufig nicht vorhanden. Obwohl der Fehlerbehandlungsalgorithmus des Zeigers somit aufgerufen wird, definiert diese Spezifikation das Fehlerbehandlungsverhalten für "add"-Zeiger, um diesen Fehler zu ignorieren und den Wert wie angegeben hinzuzufügen.

Das Objekt selbst oder ein Array, das es enthält, muss jedoch vorhanden sein, und es bleibt ein Fehler, damit dies nicht der Fall ist. Beispielsweise ein "add" mit dem Zielspeicherort "/a/b", der mit diesem Dokument beginnt:

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

ist kein Fehler, da "a" vorhanden ist und "b" zu seinem Wert hinzugefügt wird. Es handelt sich um einen Fehler in diesem Dokument:

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

da "a" nicht vorhanden ist.

Copy(Operation, Object)

Der Kopiervorgang kopiert den Wert an einem angegebenen Speicherort in den Zielspeicherort.

Das Vorgangsobjekt MUSS einen "from"-Member enthalten, bei dem es sich um eine Zeichenfolge mit einem JSON-Zeigerwert handelt, der auf den Speicherort im Zieldokument verweist, aus dem der Wert kopiert werden soll.

Der Speicherort "von" MUSS vorhanden sein, damit der Vorgang erfolgreich ist.

Beispiel:

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

Dieser Vorgang ist funktional identisch mit einem "add"-Vorgang am Zielspeicherort, der den im "from"-Element angegebenen Wert verwendet.

Hinweis: Obwohl es funktional identisch ist, rufen wir aus Leistungsgründen (mehrere Überprüfungen derselben Anforderungen) nicht add mit dem in angegebenen Wert auf.

Move(Operation, Object)

Der Vorgang "verschieben" entfernt den Wert an einer angegebenen Position und fügt ihn dem Zielspeicherort hinzu.

Das Vorgangsobjekt MUSS einen „from“-Member enthalten, bei dem es sich um eine Zeichenfolge mit einem JSON-Zeigerwert handelt, der auf den Speicherort im Zieldokument verweist, aus dem der Wert verschoben werden soll.

Der Speicherort "von" MUSS vorhanden sein, damit der Vorgang erfolgreich ist.

Beispiel:

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

Dieser Vorgang ist funktional identisch mit einem "Remove"-Vorgang am Speicherort "von", gefolgt von einem "Add"-Vorgang am Zielspeicherort mit dem soeben entfernten Wert.

Der Speicherort "from" DARF KEIN richtiges Präfix des Pfadspeicherorts sein. Das heißt, ein Standort kann nicht in eines seiner untergeordneten Elemente verschoben werden.

Remove(Operation, Object)

Der Vorgang "remove" entfernt den Wert am Zielspeicherort.

Der Zielspeicherort MUSS vorhanden sein, damit der Vorgang erfolgreich ist.

Beispiel:

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

Wenn Sie ein Element aus einem Array entfernen, werden alle Elemente oberhalb des angegebenen Indexes um eine Position nach links verschoben.

Replace(Operation, Object)

Der Vorgang "replace" ersetzt den Wert am Zielspeicherort durch einen neuen Wert. Das Vorgangsobjekt MUSS einen Wertmember enthalten, dessen Inhalt den Ersetzungswert angibt.

Der Zielspeicherort MUSS vorhanden sein, damit der Vorgang erfolgreich ist.

Beispiel:

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

Dieser Vorgang ist funktional identisch mit einem "Remove"-Vorgang für einen Wert, gefolgt von einem "Add"-Vorgang an derselben Stelle mit dem Ersetzungswert.

Hinweis: Obwohl es funktional identisch ist, rufen wir aus Leistungsgründen (mehrere Überprüfungen derselben Anforderungen) nicht remove + add auf.

Test(Operation, Object)

Definiert die Vorgänge, die für ein JSON-Patchdokument ausgeführt werden können.

Gilt für: