두 JSON 비교
글자 단위 비교(diff)와 달리 키 순서나 들여쓰기가 달라도 같은 JSON이면 ‘같아요’라고 알려 줘요.
글자가 아니라 ‘값’을 비교해요
일반 글 비교(diff)는 키 순서가 바뀌거나 들여쓰기만 달라도 전부 다르다고 표시해요. 이 도구는 두 JSON을 실제 데이터로 읽은 다음 객체는 키 이름끼리, 배열은 항목끼리 맞춰 비교해서 정말 달라진 값만 보여 줘요. 배포 전후 설정 파일, 두 서버의 API 응답, 테스트의 기대값과 실제값을 비교할 때 좋아요. 각 차이에는 /db/host처럼 위치를 뜻하는 경로(JSON Pointer, RFC 6901)가 붙어요.
배열 비교 방식
‘같은 항목끼리 맞춰 비교’가 켜져 있으면 두 배열에서 가장 긴 공통 순서(LCS)를 찾아, 중간에 끼워 넣은 항목은 ‘추가’, 빠진 항목은 ‘삭제’로 보여 줘요. 예를 들어 ["login","search"] → ["login","share","search"]는 share 하나만 추가예요. 끄면 0번째는 0번째끼리, 1번째는 1번째끼리 비교해요. 같은 자리에서 내용만 바뀐 객체는 안쪽까지 들어가 바뀐 필드만 알려 줘요.
JSON Patch와 Merge Patch
- JSON Patch(RFC 6902)는
add·remove·replace명령 목록이에요. A에 순서대로 적용하면 정확히 B가 돼요(파이썬 jsonpatch 라이브러리로 적용해 확인했어요). 쿠버네티스kubectl patch --type=json이나 HTTP PATCH API에 쓰여요. - Merge Patch(RFC 7386)는 B와 비슷하게 생긴 JSON 조각이에요. 읽기 쉽지만 배열은 통째로 바꾸고, null은 ‘키 삭제’라는 뜻이라 B에 null 값이 있으면 그대로 옮길 수 없어요. 그런 경우 경고를 띄워요.
숫자 1과 1.0은 JSON에서 같은 값이라 같다고 봐요. 아주 큰 배열(항목 수의 곱이 400만 이상)은 속도를 위해 자리끼리 비교해요. 모든 처리는 이 브라우저에서만 해요.
참고한 자료
자주 묻는 질문
키 순서만 바뀌었는데 같다고 나와요.
맞아요. JSON 객체는 키 순서에 의미가 없어서 같은 데이터로 봐요. 순서까지 비교하려면 ‘텍스트 비교’ 도구를 쓰세요.
JSON Patch를 그대로 적용해도 되나요?
이 패치는 A를 정확히 B로 바꾸도록 순서까지 맞춰 만들어요. 다만 그 사이 A가 바뀌었다면 경로가 어긋날 수 있으니 같은 A에 적용하세요.
배열 순서가 바뀐 것만 무시할 수 있나요?
지금은 순서를 의미 있게 봐요. 순서만 다른 배열은 일부 항목이 삭제·추가로 보여요.
함께 쓰면 좋은 도구
- 텍스트 비교 (차이 찾기)두 글의 달라진 부분을 줄·글자 단위로 표시
- JSON 정리 (보기 좋게 들여쓰기·검증·압축)JSON을 보기 좋게 들여쓰기, 오류 위치 표시, 한 줄 압축, 키 정렬, 문자열 이스케이프
- JSONPath 테스터 (JSON에서 값 골라내기)`$.store.book[?(@.price < 10)].title` 같은 JSONPath 식으로 큰 JSON에서 원하는 값만 골라 보고, 찾은 값의 경로·JSON Pointer 확인, CSV로 저장
- JSON → 타입 변환기 (TypeScript·Go·Python·Java·JSON Schema)API 응답 JSON을 붙여넣으면 TypeScript interface, Go struct, 파이썬 dataclass·Pydantic, 자바 record, JSON Schema를 자동으로 만들기
- 정규식 테스트 (정규표현식 매칭 확인)패턴과 플래그로 일치하는 부분을 강조 표시, 그룹 값 표, 바꾸기 미리보기, 자주 쓰는 패턴
- Base64 인코딩·디코딩 (글자·파일 ↔ Base64)글자(한글 UTF-8)를 Base64로, Base64를 글자로, 파일·이미지를 data URI로, Base64를 파일로 저장