Partilhar via


ObjectAdapter Classe

Definição

Define as operações que podem ser executadas em um documento de 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
Herança
ObjectAdapter
Implementações

Construtores

ObjectAdapter(IContractResolver, Action<JsonPatchError>, IAdapterFactory)

Inicializa uma nova instância de ObjectAdapter.

ObjectAdapter(IContractResolver, Action<JsonPatchError>)

Inicializa uma nova instância de ObjectAdapter.

Propriedades

AdapterFactory

Obtém ou define o IAdapterFactory

ContractResolver

Obtém ou define o Newtonsoft.Json.Serialization.IContractResolver.

LogErrorAction

Ação para registrar em log JsonPatchError.

Métodos

Add(Operation, Object)

A operação "adicionar" executa uma das seguintes funções, dependendo do que o local de destino referencia:

o Se o local de destino especificar um índice de matriz, um novo valor será inserido na matriz no índice especificado.

o Se o local de destino especificar um membro do objeto que ainda não existe, um novo membro será adicionado ao objeto .

o Se o local de destino especificar um membro do objeto que existe, o valor desse membro será substituído.

O objeto de operação DEVE conter um membro "value" cujo conteúdo especifica o valor a ser adicionado.

Por exemplo:

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

Quando a operação é aplicada, o local de destino DEVE referenciar um dos seguintes:

o A raiz do documento de destino – quando o valor especificado se torna todo o conteúdo do documento de destino.

o Um membro a ser adicionado a um objeto existente , em que o valor fornecido é adicionado a esse objeto no local indicado. Se o membro já existir, ele será substituído pelo valor especificado.

o Um elemento a ser adicionado a uma matriz existente , em que o valor fornecido é adicionado à matriz no local indicado. Todos os elementos no índice especificado ou acima são deslocados uma posição para a direita. O índice especificado NÃO DEVE ser maior que o número de elementos na matriz. Se o caractere "-" for usado para indexar o final da matriz (consulte [RFC6901]), isso terá o efeito de acrescentar o valor à matriz.

Como essa operação foi projetada para adicionar a objetos e matrizes existentes, sua localização de destino geralmente não existirá. Embora o algoritmo de tratamento de erros do ponteiro seja invocado, essa especificação define o comportamento de tratamento de erros para ponteiros "add" para ignorar esse erro e adicionar o valor conforme especificado.

No entanto, o objeto em si ou uma matriz que o contém precisa existir e continua sendo um erro para que esse não seja o caso. Por exemplo, um "add" com um local de destino de "/a/b" começando com este documento:

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

não é um erro, porque "a" existe e "b" será adicionado ao seu valor. É um erro neste documento:

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

porque "a" não existe.

Copy(Operation, Object)

A operação de "cópia" copia o valor em um local especificado para o local de destino.

O objeto de operação DEVE conter um membro "from", que é uma cadeia de caracteres que contém um valor de Ponteiro JSON que faz referência ao local no documento de destino do qual copiar o valor.

O local "from" DEVE existir para que a operação seja bem-sucedida.

Por exemplo:

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

Essa operação é funcionalmente idêntica a uma operação "add" no local de destino usando o valor especificado no membro "from".

Observação: mesmo que seja o mesmo funcionalmente, não chamamos add com o valor especificado em de por motivos de desempenho (várias verificações dos mesmos requisitos).

Move(Operation, Object)

A operação "mover" remove o valor em um local especificado e o adiciona ao local de destino.

O objeto de operação DEVE conter um membro "from", que é uma cadeia de caracteres que contém um valor de ponteiro JSON que faz referência ao local no documento de destino do qual mover o valor.

O local "from" DEVE existir para que a operação seja bem-sucedida.

Por exemplo:

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

Essa operação é funcionalmente idêntica a uma operação "remove" no local "from", seguida imediatamente por uma operação "add" no local de destino com o valor que acabou de ser removido.

O local "from" NÃO DEVE ser um prefixo adequado do local "path"; Ou seja, um local não pode ser movido para um de seus filhos.

Remove(Operation, Object)

A operação "remover" remove o valor no local de destino.

O local de destino DEVE existir para que a operação seja bem-sucedida.

Por exemplo:

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

Se você remover um elemento de uma matriz, todos os elementos acima do índice especificado serão deslocados uma posição para a esquerda.

Replace(Operation, Object)

A operação "substituir" substitui o valor no local de destino por um novo valor. O objeto de operação DEVE conter um membro "value" cujo conteúdo especifica o valor de substituição.

O local de destino DEVE existir para que a operação seja bem-sucedida.

Por exemplo:

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

Essa operação é funcionalmente idêntica a uma operação "remover" para um valor, seguida imediatamente por uma operação "add" no mesmo local com o valor de substituição.

Observação: embora seja o mesmo funcionalmente, não chamamos remove + add por motivos de desempenho (várias verificações dos mesmos requisitos).

Test(Operation, Object)

Define as operações que podem ser executadas em um documento de patch JSON.

Aplica-se a