위키득계정 ↗
기술

JSON 패치

JSON 패치기술
명세
RFC 6902
자료 구조
연산 객체의 배열
위치 표현
JSON 포인터
미디어 유형
application/json-patch+json
JSON 패치는 JSON 문서에 적용할 부분 변경을 연산의 배열로 표현하는 형식이다. 추가와 삭제, 교체, 이동, 복사, 값 검사를 지원하며 각 연산의 위치는 JSON 포인터로 지정한다.

변경을 순서로 표현하는 방법

각 연산 객체는 op에 수행할 동작을, path에 대상 위치를 담는다. 배열 앞에서부터 적용하고 직전 결과를 다음 연산의 대상으로 사용한다. 따라서 같은 연산을 담아도 순서가 달라지면 결과나 성공 여부가 달라질 수 있다. HTTP PATCH 요청의 본문으로 사용할 수 있다.

추가와 교체가 구분되는 이유

add는 객체의 새 항목을 만들거나 기존 항목을 바꾸며, 배열에서는 지정 위치에 값을 끼워 넣는다. 배열 경로 끝의 하이픈은 마지막에 추가한다는 뜻이다. 반면 replace와 remove는 대상 값이 이미 있어야 한다. add도 상위 객체나 배열까지 자동으로 만드는 것은 아니다.

이동과 복사 및 사전 검사

move는 from에서 지정한 값을 제거하고 대상에 넣으며 copy는 원래 값을 유지한다. test는 대상과 제시한 값이 같은지 검사한다. 앞선 검사나 변경이 실패하면 나머지 연산으로 계속 진행하지 않는다. 값을 삭제하는 연산 뒤에서는 배열 인덱스도 달라질 수 있으므로 후속 경로에 영향을 준다.

관련 문서

JSON 포인터 / JSON / HTTP / JSON Schema / 배열 / REST