Поделиться через


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 Элемент, добавляемый в существующий массив, после чего предоставленное значение добавляется в массив в указанном расположении. Все элементы с указанным индексом или выше смещаются на одну позицию вправо. Указанный индекс НЕ ДОЛЖЕН быть больше числа элементов в массиве. Если символ "-" используется для индексирования конца массива (см. [RFC6901]), это будет действовать при добавлении значения в массив.

Так как эта операция предназначена для добавления в существующие объекты и массивы, ее целевое расположение часто не существует. Несмотря на то, что алгоритм обработки ошибок указателя будет вызываться таким образом, эта спецификация определяет поведение обработки ошибок для указателей "добавить", чтобы игнорировать эту ошибку и добавлять значение, как указано.

Однако сам объект или массив, содержащий его, должен существовать, и он остается ошибкой, так как это не так. Например, "добавить" с целевым расположением "/a/b", начиная с этого документа:

{ "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" НЕ ДОЛЖНО быть правильным префиксом расположения path; Т. е. расположение не может быть перемещено в один из его дочерних элементов.

Remove(Operation, Object)

Операция удаления удаляет значение в целевом расположении.

Для успешного выполнения операции должно существовать целевое расположение.

Пример:

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

При удалении элемента из массива все элементы выше указанного индекса сдвигаются на одну позицию влево.

Replace(Operation, Object)

Операция "заменить" заменяет значение в целевом расположении новым значением. Объект операции ДОЛЖЕН содержать элемент value, содержимое которого задает значение замены.

Для успешного выполнения операции должно существовать целевое расположение.

Пример:

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

Эта операция функционально идентична операции удаления для значения, за которой сразу же следует операция "добавить" в том же расположении со значением замены.

Примечание. Несмотря на то, что функционально это одно и то же, мы не вызываем метод remove + add из соображений производительности (несколько проверок одинаковых требований).

Test(Operation, Object)

Определяет операции, которые можно выполнять с документом исправления JSON.

Применяется к