JSON Merge Patch 도구
브라우저 처리원본 JSON에 RFC 7396 Merge Patch를 적용합니다. 패치에 적은 키만 바뀌고, 값이 null인 키는 삭제되며 배열은 항목을 합치지 않고 통째로 바뀝니다.
- 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
Merge Patch는 '바꿀 부분만 같은 모양으로 적어 보내는' 방식의 부분 수정 형식으로, 많은 REST API의 PATCH 요청이 이 규칙을 씁니다. 이 도구는 원본 JSON과 패치를 받아 서버가 적용했을 때와 같은 결과를 미리 보여 줍니다.
{
"title": "봄 세일",
"price": 9900,
"tags": [
"sale"
],
"seo": {
"title": "봄 세일"
}
}
JSON Merge Patch 도구 사용 가이드
Merge Patch는 '바꿀 부분만 같은 모양으로 적어 보내는' 방식의 부분 수정 형식으로, 많은 REST API의 PATCH 요청이 이 규칙을 씁니다. 이 도구는 원본 JSON과 패치를 받아 서버가 적용했을 때와 같은 결과를 미리 보여 줍니다.
규칙은 세 가지입니다. 패치에 적은 키는 그 값으로 바뀌고, 값을 null로 적은 키는 지워지며, 패치에 없는 키는 그대로 남습니다. 객체 안의 객체도 같은 규칙으로 한 단계씩 내려가며 합칩니다.
배열은 항목 단위로 합치지 않고 패치의 배열로 통째로 바뀝니다. 태그 하나만 빼려 해도 남길 태그 전체를 적어야 한다는 점을 결과로 바로 확인할 수 있습니다.
사용 방법
- '원본 JSON' 칸에 현재 데이터를 붙여 넣습니다.
- 'Merge Patch' 칸에 바꿀 키만 적은 JSON을 넣습니다. 지울 키는 값을 null로 적습니다.
- '실행'을 눌러 적용 결과를 확인하고 복사하거나 .json으로 받습니다.
예시: 상품 가격 변경과 noindex 해제
원본: {"title":"봄 세일","price":12000,"tags":["sale","new"],"seo":{"title":"봄 세일","noindex":true}}
패치: {"price":9900,"tags":["sale"],"seo":{"noindex":null}}{
"title": "봄 세일",
"price": 9900,
"tags": [
"sale"
],
"seo": {
"title": "봄 세일"
}
}seo.noindex는 null이라 삭제되고, seo.title은 패치에 없어서 그대로 남았습니다.
이럴 때 쓰면 좋아요
- PATCH API를 호출하기 전에 서버에 반영될 최종 데이터를 미리 확인할 때
- 설정 파일 기본값 위에 환경별 덮어쓰기 값을 합친 결과를 볼 때
- API 문서에 부분 수정 요청 예시와 그 결과를 함께 적을 때
- null 삭제 규칙 때문에 값이 사라지는 문제를 재현해 볼 때
문제가 생겼을 때
Merge Patch에서 null은 '삭제'라는 뜻이라 null 값을 저장할 방법이 없습니다. null을 값으로 남겨야 하면 JSON Patch의 replace 연산을 쓰세요.
배열은 통째로 바뀝니다. 기존 항목까지 모두 적은 새 배열을 패치에 넣거나, 항목 단위 수정이 가능한 JSON Patch의 add를 쓰세요.
활용 팁
- 패치 자체가 객체가 아니라 숫자나 배열이면 원본 전체가 그 값으로 바뀝니다. 의도한 것인지 확인하세요.
- 두 버전의 차이를 보고 싶다면 결과를 JSON 데이터 비교기에 원본과 함께 넣으면 바뀐 키가 표시됩니다.
자주 묻는 질문
Merge Patch는 바뀐 모양을 그대로 적는 간단한 형식이고, JSON Patch는 add·remove·replace 같은 연산 목록입니다. 배열 항목 하나만 고치거나 null을 값으로 넣으려면 JSON Patch가 필요합니다.
RFC 7396에서 정한 application/merge-patch+json을 씁니다. 서버가 이 형식을 지원하는지 API 문서에서 먼저 확인하세요.
됩니다. 원본이 숫자나 배열이고 패치가 객체면, 규칙에 따라 빈 객체에서 시작해 패치의 키를 채운 결과가 나옵니다.