JSON Patch 생성·적용기
브라우저 처리두 번째 칸에 RFC 6902 연산 배열을 넣으면 원본에 적용하고, 바뀐 JSON 문서를 넣으면 원본을 그 문서로 바꾸는 Patch를 만들어 적용 결과까지 검증합니다.
- 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
JSON Patch는 [{"op":"replace","path":"/title","value":"New"}]처럼 수정 연산을 순서대로 적은 목록입니다. 두 번째 칸에 이런 배열을 넣으면 원본에 add, remove, replace, move, copy, test 연산을 차례로 적용한 결과를 보여 줍니다.
[
{ "op": "replace", "path": "/title", "value": "New" },
{ "op": "add", "path": "/tags/1", "value": "b" },
{ "op": "add", "path": "/active", "value": true }
]
JSON Patch 생성·적용기 사용 가이드
JSON Patch는 [{"op":"replace","path":"/title","value":"New"}]처럼 수정 연산을 순서대로 적은 목록입니다. 두 번째 칸에 이런 배열을 넣으면 원본에 add, remove, replace, move, copy, test 연산을 차례로 적용한 결과를 보여 줍니다.
두 번째 칸에 연산 목록 대신 '바뀐 뒤의 문서'를 넣으면 생성 모드로 동작합니다. 두 문서를 키별로 비교해 필요한 remove·add·replace 연산을 만들고, 만든 Patch를 원본에 실제로 적용해 바뀐 문서와 똑같아지는지 확인한 뒤에 결과를 내보냅니다.
적용 중 test 연산이 맞지 않거나 경로가 없으면 그 자리에서 멈추고 결과를 반영하지 않습니다. 경로는 RFC 6901 JSON Pointer 규칙을 따라 '/' 앞뒤의 키 이름에 들어 있는 /는 ~1, ~는 ~0으로 적습니다.
사용 방법
- '원본 JSON 문서' 칸에 현재 데이터를 넣습니다.
- 적용하려면 두 번째 칸에 [ … ] 연산 배열을, Patch를 만들려면 바뀐 뒤의 JSON 문서를 넣습니다.
- '실행'을 누르면 적용 결과 문서 또는 생성된 연산 배열이 나옵니다.
예시: 바뀐 문서로 Patch 만들기
원본: {"title":"Old","count":2,"tags":["a"]}
바뀐 문서: {"title":"New","count":2,"tags":["a","b"],"active":true}[
{ "op": "replace", "path": "/title", "value": "New" },
{ "op": "add", "path": "/tags/1", "value": "b" },
{ "op": "add", "path": "/active", "value": true }
]바뀌지 않은 count는 연산에 들어가지 않습니다. 실제 결과는 키마다 줄을 나눠 나옵니다.
이럴 때 쓰면 좋아요
- API에 보낼 PATCH 요청 본문을 수정 전후 데이터로 자동으로 만들 때
- 받은 Patch를 적용하면 어떤 문서가 되는지 서버에 보내기 전에 확인할 때
- test 연산으로 '값이 예상과 같을 때만 수정'하는 동시성 조건을 시험할 때
- 설정 변경 이력을 연산 목록으로 남겨 리뷰할 때
문제가 생겼을 때
{"op":"add",…} 하나만 넣은 경우입니다. JSON Patch는 연산이 하나여도 [ ]로 감싼 배열이어야 합니다.
배열에 없는 번호를 가리켰습니다. 끝에 추가할 때는 /tags/- 처럼 -를 쓰고, 01이나 -1 같은 번호는 허용되지 않습니다.
활용 팁
- 길이가 같은 배열은 항목별로 비교해 바뀐 값만 replace하고, 길이가 다르면 같은 항목을 최대한 남긴 채 add와 remove로 맞춥니다.
- 원본이 배열이고 두 번째 칸도 op가 없는 배열이면 '바뀐 문서'로 보고 Patch를 만듭니다. op가 하나라도 있으면 연산 목록으로 적용합니다.
자주 묻는 질문
항상 최소는 아닙니다. 대신 원본에 적용하면 바뀐 문서와 정확히 같아지는지 매번 검증한 뒤에 보여 주므로 결과는 믿고 쓸 수 있습니다.
적용과 생성 모두 1,000개까지입니다. 그보다 많은 변경이면 문서 전체를 replace하는 편이 더 간단할 수 있습니다.
아니요. 하나라도 실패하면 오류만 보여 주고 결과 문서를 내보내지 않습니다. RFC 6902의 전부 적용 또는 전부 취소 규칙과 같습니다.