共用方式為


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 如果目標位置指定存在的物件成員,則會取代該成員的值。

工作物件必須包含「值」成員,其內容會指定要加入的值。

例如:

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

套用作業時,目標位置必須參考下列其中一項:

o 目的檔案的根目錄 - 其中指定的值會變成目的檔案的整個內容。

o 要加入至現有物件的成員 - 其中提供的值會新增至指定位置的該物件。 如果成員已經存在,則會由指定的值取代。

o 要加入至現有陣列的專案 - 其中提供的值會新增至指定位置的陣列。 指定索引上方的任何專案會向右移動一個位置。 指定的索引不可大於陣列中的專案數目。 如果使用 「-」 字元來編制陣列結尾的索引, (請參閱 [RFC6901]) ,這會影響將值附加至陣列。

由於這項作業的設計目的是要新增至現有的物件和陣列,因此其目標位置通常不存在。 雖然將叫用指標的錯誤處理演算法,但此規格會定義「新增」指標的錯誤處理行為,以忽略該錯誤,並依指定新增值。

不過,物件本身或包含它的陣列必須存在,而且它仍然發生錯誤,以免發生此情況。 例如,開頭為 「/a/b」 的目標位置為 「/a/b」 的 「add」 :

{ 「a」: { 「foo」: 1 }

不是錯誤,因為 「a」 存在,而 「b」 會新增至其值。 本檔中發生錯誤:

{ 「q」: { 「bar」: 2 } }

因為 「a」 不存在。

Copy(Operation, Object)

「複製」作業會將位於指定位置的值複製到目標位置。

工作物件必須包含 「from」 成員,這是字串,其中包含 JSON 指標值,參考目的檔案中要複製值的位置。

「寄件者」位置必須存在,才能讓作業成功。

例如:

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

此作業的運作方式與使用 「from」 成員中指定的值,在目標位置的「新增」作業相同。

注意:即使功能上相同,基於效能考慮,我們不會呼叫 add,因為效能原因 (多個相同需求檢查) 中指定的值。

Move(Operation, Object)

「移動」作業會移除指定位置的值,並將其新增至目標位置。

工作物件必須包含 「from」 成員,此字串包含 JSON 指標值,參考目的檔案中要從中移動值的位置。

「寄件者」位置必須存在,才能讓作業成功。

例如:

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

此作業的運作方式與「from」 位置上的「移除」作業相同,後面緊接著位於目標位置的「新增」作業,其中包含剛移除的值。

「from」 位置不得為 「path」 位置的適當前置詞;亦即,位置無法移至其中一個子系。

Remove(Operation, Object)

「移除」作業會移除目標位置的值。

必須存在目標位置,才能讓作業成功。

例如:

{ 「op」: 「remove」, 「path」: 「/a/b/c」 }

如果從陣列移除專案,則指定索引上方的任何元素會向左移一個位置。

Replace(Operation, Object)

「replace」 作業會將目標位置上的值取代為新的值。 工作物件必須包含「值」成員,其內容會指定取代值。

必須存在目標位置,才能讓作業成功。

例如:

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

此作業的運作方式與值的「移除」作業相同,後面緊接著位於相同位置且取代值的「新增」作業。

注意:雖然功能相同,但我們不會基於效能考慮呼叫 remove + add, (多個相同需求檢查) 。

Test(Operation, Object)

定義可在 JSON 修補檔上執行的作業。

適用於