JSON Patch 빌더 (RFC 6902)
RFC 6902 JSON Patch는 JSON 문서 변경 사항 기술하는 와이어 포맷 — PATCH 요청·낙관적 업데이트·되돌리기 히스토리·운영 변환에 유용. 이 툴은 양방향 처리: source와 target JSON 붙여넣기 → 하나를 다른 하나로 변환하는 최소 patch 획득, 또는 source와 patch 붙여넣기 → 적용 후 결과 확인. diff는 슬래시·틸드 포함 키에 `~0`/`~1` JSON Pointer 이스케이프 사용한 재귀 구조 비교. apply 쪽은 6개 작업 모두 존중 — `test`(어설션 실패 시 에러)·`copy`·`move` 포함. 서버 호출 전 patch 테스트, 예시로 올바른 작업 찾을 때 유용.
[
{
"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 작업과 `~0`/`~1` 포인터 이스케이프 지원.
사용법
- Diff 모드: source와 target 붙여넣기 → patch JSON 확인. 한쪽 편집 → patch 변화 확인.
- Apply 모드: source와 patch 배열 붙여넣기 → 결과 문서 확인. 에러(잘못된 포인터·실패한 `test`) 인라인 표시.
- JSON Pointer 구문: `/foo/0/bar`는 `foo.0.bar` 탐색. `/`는 `~1`로, `~`는 `~0`으로 이스케이프. 배열 경로의 후행 `-`는 '추가' 의미.
자주 묻는 질문
- 왜 새 문서 그냥 안 보내?
- 첫째 대역폭. 둘째 동시성: Alice와 Bob 둘 다 문서 편집 시 patch는 의미적으로 병합 가능(`replace /name`은 `add /tags/-`과 호환), 두 전체 문서는 승자 선택해야 함. 게다가 patch는 무엇이·언제 변경됐는지 정확한 감사 기록.
- JSON Merge Patch (RFC 7396)와 같나?
- 아니. Merge Patch는 더 단순 — 존재하는 키가 덮어쓰고 `null`이 삭제하는 부분 문서 전송. 사람엔 쉽지만 정밀도 손실(배열 추가 불가·리터럴 `null` 값 표현 불가·원자적 test 없음). RFC 6902(이 툴)은 정밀 와이어 포맷. RFC 7396은 편의 포맷.
관련 도구
JSON 포인터 리졸버 (RFC 6901)
/user/roles/0 같은 RFC 6901 JSON 포인터를 JSON 문서에서 해석 — ~0/~1 이스케이프와 URI 프래그먼트(#/…) 지원 — 문서 내 모든 포인터의 클릭 가능한 목록 포함, 브라우저에서.
JSON Diff 뷰어
두 JSON을 구조적으로 비교 — 어떤 키가 추가·삭제·변경됐는지 정확히 보여 줍니다.
Semver 도구 (파서·비교기·범프)
두 시맨틱 버전 동시 파싱·비교·범프, ^x.y.z·~x.y.z가 실제 어디까지 매치하는지 보여주는 범위 확장기 포함.
PWA Manifest 빌더
Progressive Web App용 유효 `manifest.json` 빌드 — 이름·아이콘·테마 컬러·디스플레이 모드·스코프·방향 — 매칭 HTML `<link>` 와 Apple 메타 태그 포함.
Quoted-Printable 인코더 & 디코더
텍스트를 MIME Quoted-Printable(RFC 2045)로 인코딩하거나 다시 디코딩 — =XX 이스케이프·소프트 줄바꿈·UTF-8 처리, 인코딩 시 76자 줄바꿈 — 브라우저에서.
JWK ↔ PEM 변환기
JWK이나 JWKS 전체를 PEM 공개키로, 또는 그 반대로 변환하고 각 키의 RFC 7638 thumbprint까지 브라우저에서 계산합니다.