다음을 통해 공유


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] 참조) 배열에 값을 추가하는 효과가 있습니다.

이 작업은 기존 개체 및 배열에 추가하도록 설계되었기 때문에 대상 위치가 존재하지 않는 경우가 많습니다. 포인터의 오류 처리 알고리즘이 호출되지만 이 사양은 해당 오류를 무시하고 지정된 값을 추가하기 위해 "add" 포인터에 대한 오류 처리 동작을 정의합니다.

그러나 개체 자체 또는 개체를 포함하는 배열이 있어야 하며 그렇지 않은 경우 오류로 남아 있습니다. 예를 들어 이 문서로 시작하는 대상 위치가 "/a/b"인 "add"입니다.

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

는 "a"가 있고 "b"가 해당 값에 추가되기 때문에 오류가 아닙니다. 이 문서의 오류는 다음과 같습니다.

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

"a"가 없으므로

Copy(Operation, Object)

"복사" 작업은 지정된 위치에 있는 값을 대상 위치에 복사합니다.

작업 개체에는 값을 복사할 대상 문서의 위치를 참조하는 JSON 포인터 값이 포함된 문자열인 "from" 멤버가 포함되어야 합니다.

작업이 성공하려면 "원본" 위치가 있어야 합니다.

예를 들면 다음과 같습니다.

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

이 작업은 "from" 멤버에 지정된 값을 사용하여 대상 위치의 "add" 작업과 기능적으로 동일합니다.

참고: 기능적으로 동일하더라도 성능상의 이유로 에서 지정된 값으로 add를 호출하지 않습니다(동일한 요구 사항에 대한 여러 검사).

Move(Operation, Object)

"이동" 작업은 지정된 위치에 있는 값을 제거하고 대상 위치에 추가합니다.

작업 개체에는 값을 이동할 대상 문서의 위치를 참조하는 JSON 포인터 값이 포함된 문자열인 "from" 멤버가 포함되어야 합니다.

작업이 성공하려면 "원본" 위치가 있어야 합니다.

예를 들면 다음과 같습니다.

{ "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)

"바꾸기" 작업은 대상 위치의 값을 새 값으로 바꿉니다. 작업 개체에는 콘텐츠가 대체 값을 지정하는 "value" 멤버가 포함되어야 합니다.

작업이 성공하려면 대상 위치가 있어야 합니다.

예를 들면 다음과 같습니다.

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

이 작업은 값에 대한 "제거" 작업과 기능적으로 동일하며, 그 다음에는 대체 값이 있는 동일한 위치에서 즉시 "추가" 작업이 수행됩니다.

참고: 기능적으로 동일하더라도 성능상의 이유로 remove + add를 호출하지 않습니다(동일한 요구 사항에 대한 여러 검사).

Test(Operation, Object)

JSON 패치 문서에서 수행할 수 있는 작업을 정의합니다.

적용 대상