Condividi tramite


ObjectAdapter Classe

Definizione

Definisce le operazioni che è possibile eseguire su un documento di patch 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
Ereditarietà
ObjectAdapter
Implementazioni

Costruttori

ObjectAdapter(IContractResolver, Action<JsonPatchError>)

Inizializza una nuova istanza di ObjectAdapter.

ObjectAdapter(IContractResolver, Action<JsonPatchError>, IAdapterFactory)

Inizializza una nuova istanza di ObjectAdapter.

Proprietà

AdapterFactory

Ottiene o imposta l'oggetto IAdapterFactory

ContractResolver

Ottiene o imposta Newtonsoft.Json.Serialization.IContractResolver.

LogErrorAction

Azione per la registrazione JsonPatchErrordi .

Metodi

Add(Operation, Object)

L'operazione "add" esegue una delle funzioni seguenti, a seconda dei riferimenti alla posizione di destinazione:

o Se il percorso di destinazione specifica un indice di matrice, viene inserito un nuovo valore nella matrice in corrispondenza dell'indice specificato.

o Se il percorso di destinazione specifica un membro oggetto che non esiste già, viene aggiunto un nuovo membro all'oggetto .

o Se la posizione di destinazione specifica un membro dell'oggetto esistente, il valore del membro viene sostituito.

L'oggetto operazione DEVE contenere un membro "valore" il cui contenuto specifica il valore da aggiungere.

Ad esempio:

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

Quando viene applicata l'operazione, il percorso di destinazione DEVE fare riferimento a uno di:

o La radice del documento di destinazione, in cui il valore specificato diventa l'intero contenuto del documento di destinazione.

o Un membro da aggiungere a un oggetto esistente, in cui il valore fornito viene aggiunto a tale oggetto nella posizione indicata. Se il membro esiste già, viene sostituito dal valore specificato.

o Elemento da aggiungere a una matrice esistente, in cui il valore fornito viene aggiunto alla matrice nella posizione indicata. Tutti gli elementi in corrispondenza o superiore all'indice specificato vengono spostati una posizione a destra. L'indice specificato NON DEVE essere maggiore del numero di elementi nella matrice. Se il carattere "-" viene usato per indicizzare la fine della matrice (vedere [RFC6901]), questo ha l'effetto di accodare il valore alla matrice.

Poiché questa operazione è progettata per aggiungere a oggetti e matrici esistenti, la relativa posizione di destinazione spesso non esiste. Sebbene venga richiamato l'algoritmo di gestione degli errori del puntatore, questa specifica definisce il comportamento di gestione degli errori per i puntatori "add" per ignorare tale errore e aggiungere il valore come specificato.

Tuttavia, l'oggetto stesso o una matrice che lo contiene deve esistere e rimane un errore perché non sia il caso. Ad esempio, un "add" con un percorso di destinazione "/a/b" a partire da questo documento:

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

non è un errore, perché "a" esiste e "b" verrà aggiunto al relativo valore. Si tratta di un errore in questo documento:

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

perché "a" non esiste.

Copy(Operation, Object)

L'operazione "copia" copia il valore in una posizione specificata nel percorso di destinazione.

L'oggetto operazione DEVE contenere un membro "from", ovvero una stringa contenente un valore puntatore JSON che fa riferimento alla posizione nel documento di destinazione da cui copiare il valore.

Il percorso "from" deve esistere affinché l'operazione venga completata correttamente.

Ad esempio:

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

Questa operazione è funzionalmente identica a un'operazione "add" nella posizione di destinazione usando il valore specificato nel membro "from".

Nota: anche se è lo stesso in modo funzionale, non viene chiamato add con il valore specificato in da per motivi di prestazioni (più controlli degli stessi requisiti).

Move(Operation, Object)

L'operazione "move" rimuove il valore in una posizione specificata e lo aggiunge alla posizione di destinazione.

L'oggetto operazione DEVE contenere un membro "from", ovvero una stringa contenente un valore puntatore JSON che fa riferimento alla posizione nel documento di destinazione da cui spostare il valore.

Il percorso "from" deve esistere affinché l'operazione venga completata correttamente.

Ad esempio:

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

Questa operazione è funzionalmente identica a un'operazione "remove" nella posizione "da", seguita immediatamente da un'operazione "add" nella posizione di destinazione con il valore appena rimosso.

La posizione "from" NON DEVE essere un prefisso corretto del percorso "path". ad esempio, una posizione non può essere spostata in uno dei suoi figli.

Remove(Operation, Object)

L'operazione "remove" rimuove il valore nella posizione di destinazione.

Il percorso di destinazione DEVE esistere affinché l'operazione venga completata correttamente.

Ad esempio:

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

Se si rimuove un elemento da una matrice, tutti gli elementi sopra l'indice specificato vengono spostati una posizione a sinistra.

Replace(Operation, Object)

L'operazione "replace" sostituisce il valore nella posizione di destinazione con un nuovo valore. L'oggetto operazione DEVE contenere un membro "valore" il cui contenuto specifica il valore di sostituzione.

Il percorso di destinazione DEVE esistere affinché l'operazione venga completata correttamente.

Ad esempio:

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

Questa operazione è funzionalmente identica a un'operazione "remove" per un valore, seguita immediatamente da un'operazione "add" nella stessa posizione con il valore di sostituzione.

Nota: anche se è lo stesso a livello funzionale, non viene chiamato remove + add per motivi di prestazioni (più controlli degli stessi requisiti).

Test(Operation, Object)

Definisce le operazioni che è possibile eseguire su un documento di patch JSON.

Si applica a