JSON Patch 빌더 (RFC 6902)
source/target 쌍에서 RFC 6902 JSON Patch 생성, 또는 기존 patch를 문서에 적용. add·remove·replace·move·copy·test 작업 지원.
[
{
"op": "replace",
"path": "/age",
"value": 31
},
{
"op": "replace",
"path": "/address/city",
"value": "Busan"
},
{
"op": "remove",
"path": "/address/zip"
},
{
"op": "add",
"path": "/address/country",
"value": "KR"
},
{
"op": "replace",
"path": "/tags/1",
"value": "owner"
},
{
"op": "add",
"path": "/tags/2",
"value": "user"
}
]순수 RFC 6902입니다. add, remove, replace, move, copy, test 연산과 JSON Pointer 이스케이프(~는 ~0, /는 ~1)를 지원합니다.
사용법
- Diff 모드: source와 target 붙여넣기 → patch JSON 확인. 한쪽 편집 → patch 변화 확인.
- Apply 모드: source와 patch 배열 붙여넣기 → 결과 문서 확인. 에러(잘못된 포인터·실패한
test) 인라인 표시. - JSON Pointer 구문:
/foo/0/bar는foo.0.bar탐색./는~1로,~는~0으로 이스케이프. 배열 경로의 후행-는 '추가' 의미.
자세한 설명
펼치기접기
RFC 6902 JSON Patch는 JSON 문서 변경 사항 기술하는 와이어 포맷 — PATCH 요청·낙관적 업데이트·되돌리기 히스토리·운영 변환에 유용. 이 툴은 양방향 처리: source와 target JSON 붙여넣기 → 하나를 다른 하나로 변환하는 최소 patch 획득, 또는 source와 patch 붙여넣기 → 적용 후 결과 확인. diff는 슬래시·틸드 포함 키에 ~0/~1 JSON Pointer 이스케이프 사용한 재귀 구조 비교. apply 쪽은 6개 작업 모두 존중 — test(어설션 실패 시 에러)·copy·move 포함. 서버 호출 전 patch 테스트, 예시로 올바른 작업 찾을 때 유용.
자주 묻는 질문
왜 새 문서 그냥 안 보내?
첫째 대역폭. 둘째 동시성: Alice와 Bob 둘 다 문서 편집 시 patch는 의미적으로 병합 가능(replace /name은 add /tags/-과 호환), 두 전체 문서는 승자 선택해야 함. 게다가 patch는 무엇이·언제 변경됐는지 정확한 감사 기록.
JSON Merge Patch (RFC 7396)와 같나?
아니. Merge Patch는 더 단순 — 존재하는 키가 덮어쓰고 null이 삭제하는 부분 문서 전송. 사람엔 쉽지만 정밀도 손실(배열 추가 불가·리터럴 null 값 표현 불가·원자적 test 없음). RFC 6902(이 툴)은 정밀 와이어 포맷. RFC 7396은 편의 포맷.
패치가 두 사람이 서로를 덮어쓰는 것을 어떻게 막나?
test 연산으로 막고, 그게 이 연산이 존재하는 이유다. 변경 앞에 기대하는 값에 대한 test를 붙이면, 다른 사람이 이미 그 필드를 바꿨을 때 패치 전체가 실패한다. 조용히 이기는 대신 충돌을 알게 되는 것이다. test가 없으면 패치도 문서 전체를 보내는 것만큼이나 동시 편집을 뭉갤 수 있다.
차이로 생성한 패치를 보내면 안 되는 경우는?
두 문서의 차이가 데이터 관점에서는 의미 없는 종류일 때다. 생성된 패치는 구조를 대상으로 하므로, 객체 배열의 순서만 바뀌어도 이동 하나가 아니라 긴 교체 목록으로 나올 수 있고, 키 직렬화 순서가 다른 객체는 잡음을 만든다. 받는 쪽이 무엇이 바뀌었는지 기록하거나 감사한다면, 의도한 연산만 담은 패치를 직접 보내라.
관련 도구
패치 / diff 검사기
통합 diff나 .patch 파일을 분석합니다. 변경된 파일, 파일별 추가·삭제 줄 수, 그리고 git apply를 실패시키는 손상된 헝크를 찾아냅니다.
개발
JSON 포인터 리졸버 (RFC 6901)
/user/roles/0 같은 RFC 6901 JSON 포인터를 JSON 문서에서 해석 — ~0/~1 이스케이프와 URI 프래그먼트(#/…) 지원 — 문서 내 모든 포인터의 클릭 가능한 목록 포함, 브라우저에서.
개발
JSON 머지 패치 (RFC 7386)
RFC 7386 JSON 머지 패치를 적용하거나 생성하고, 변경 내역을 전부 나열합니다 — 키를 설정하는 게 아니라 삭제하는 null까지.
개발
JSON 스키마 검사기
JSON 문서를 JSON 스키마로 브라우저에서 검사합니다. 오류마다 JSON 포인터, 문서에서의 줄 번호, 실패한 키워드를 보여줍니다.
개발
JSON Diff 뷰어
두 JSON을 구조적으로 비교 — 어떤 키가 추가·삭제·변경됐는지 정확히 보여 줍니다.
개발
JSON 정규화 (RFC 8785 JCS)
RFC 8785대로 JSON을 정규화하고 해시합니다: UTF-16 키 순서, ECMAScript 숫자 표기, 공백 제거, 그리고 그 바이트의 SHA-256.
개발