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”的“add”:

{ “a”: { “foo”: 1 } }

不是错误,因为“a”存在,“b”将添加到其值。 这是本文档中的错误:

{ “q”: { “bar”: 2 } }

因为“a”不存在。

Copy(Operation, Object)

“复制”操作将指定位置的值复制到目标位置。

操作对象必须包含一个“from”成员,该成员是一个字符串,其中包含一个 JSON Pointer 值,该值引用要从其复制值的目标文档中的位置。

必须存在“发件人”位置才能使操作成功。

例如:

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

此操作在功能上与使用“发件人”成员中指定的值的目标位置的“添加”操作相同。

注意:尽管它在功能上是相同的,但出于性能原因,我们不会使用 中指定的值调用 add, (多次检查相同的要求) 。

Move(Operation, Object)

“移动”操作将删除指定位置的值,并将其添加到目标位置。

操作对象必须包含一个“from”成员,该成员是包含 JSON 指针值的字符串,其中的指针值引用目标文档中要从中移动值的位置。

必须存在“发件人”位置才能使操作成功。

例如:

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

此操作在功能上与“从”位置上的“删除”操作相同,紧接着在目标位置执行“添加”操作,其值刚刚删除。

“发件人”位置不得为“路径”位置的正确前缀;即不能将某个位置移动到其子位置之一。

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 修补程序文档执行的操作。

适用于