GroundHaus

JSON 비교

두 JSON을 비교해 추가·삭제·변경된 키를 찾아줍니다. 키 순서 차이는 무시합니다.

추가
2
삭제
0
변경
3
경로구분이전이후
version변경"1.0.0""1.1.0"
server.port변경43218080
server.ssl변경falsetrue
server.host추가—"0.0.0.0"
tags[2]추가—"tailwind"

비교는 브라우저 안에서만 이뤄집니다. 키 순서와 들여쓰기 차이는 무시하고 값만 비교하므로, 같은 데이터를 다른 포맷으로 저장한 파일도 "일치"로 나옵니다. 배열은 인덱스 기준으로 맞춰 비교하기 때문에, 중간에 항목이 하나 삽입되면 그 뒤 전체가 변경으로 표시됩니다.

사용법 · 예제 · 제한 사항

이게 뭔가요?

두 JSON을 파싱한 뒤 구조를 따라 내려가며 추가·삭제·변경된 항목을 addr.city, tags[1] 같은 경로와 함께 표로 보여 줍니다. 텍스트 비교와 달리 키 순서나 들여쓰기 차이는 무시하고 값의 차이만 찾습니다. 페이지를 열면 예시 JSON 두 벌이 미리 들어 있으니 그대로 결과를 먼저 보고, 비우기로 지운 뒤 자신의 데이터를 넣으면 됩니다.

예제 — 결과 읽는 법

이전 (A) 에 붙여넣기:

{
  "id": 1,
  "name": "홍길동",
  "tags": ["a", "b"],
  "addr": { "city": "서울", "zip": "04524" }
}

이후 (B) 에 붙여넣기. name과 id의 순서가 바뀌었고, 태그·주소·활성 여부가 달라졌습니다.

{
  "name": "홍길동",
  "id": 1,
  "tags": ["a", "c", "d"],
  "addr": { "city": "부산" },
  "active": true
}

결과 요약은 추가 2 · 삭제 1 · 변경 2이고, 표는 다음과 같습니다.

경로 구분 이전 이후
tags[1] 변경 "b" "c"
tags[2] 추가 — "d"
addr.city 변경 "서울" "부산"
addr.zip 삭제 "04524" —
active 추가 — true

id와 name은 순서만 바뀌었으므로 표에 나오지 않습니다. 행 순서는 A의 키 순서를 먼저 따라가고, B에만 있는 키가 뒤에 붙습니다. ⇄ 좌우 바꾸기를 누르면 A·B가 교체되어 추가와 삭제가 서로 뒤바뀝니다. 값은 80자까지만 미리 보기로 표시하고 그 이상은 …으로 자릅니다.

텍스트 비교와 뭐가 다른가요?

텍스트 비교 JSON 비교
키 순서가 다르면 전부 다르다고 표시 무시
들여쓰기·줄바꿈이 다르면 전부 다르다고 표시 무시
1.0과 1 다름 같음 (둘 다 숫자 1로 파싱)
"\u00e9"와 "é" 다름 같음
결과 형태 줄 단위 경로 단위

같은 데이터를 다른 도구로 저장해 포맷만 달라진 설정 파일은 텍스트 비교에선 온통 빨갛게 나오지만 여기서는 “일치”입니다. 반대로 문자열 안의 공백·대소문자는 값의 차이이므로 그대로 변경으로 잡힙니다.

비교 규칙 — 케이스별 결과

A B 결과
{"n": 1} {"n": "1"} n 변경 1 → "1" (자료형이 다르면 다른 값)
{"n": null} {} n 삭제 (null과 키 없음은 다름)
{"x": {}} {"x": []} x 변경 {} → []
{"x": {"a": 1}} {"x": 5} x 변경 {"a":1} → 5 (한쪽만 객체면 통째로 변경)
["사과","바나나","포도"] ["사과","딸기","바나나","포도"] [1] 변경, [2] 변경, [3] 추가
[1, 2, 3] [1, 2] [2] 삭제
1 2 (루트) 변경
{"id": 9007199254740993} {"id": 9007199254740992} 일치 (정밀도 손실로 같은 숫자가 됨)

다섯째 줄이 배열 비교의 핵심 한계입니다. 배열은 같은 인덱스끼리 짝지으므로 중간에 하나 끼어들면 그 뒤가 줄줄이 변경으로 표시됩니다. 목록을 비교할 때는 두 배열을 같은 키로 정렬해서 넣거나, {"P-001": {…}, "P-002": {…}}처럼 id를 키로 한 객체로 바꿔 넣으면 추가·삭제가 정확히 나옵니다.

마지막 줄은 자바스크립트 숫자 한계입니다. 파싱 과정에서 차이가 사라지는 경우이니, 자릿수가 긴 숫자 ID를 다루는 API 응답을 비교할 때는 원본을 눈으로 한 번 더 확인하세요.

오류가 나올 때

표시 뜻
왼쪽 JSON 오류 — … A가 유효한 JSON이 아님. 브라우저의 원래 오류 메시지를 그대로 보여 줌
오른쪽 JSON 오류 — … B가 유효한 JSON이 아님. A가 통과한 뒤에만 검사
비우기 직후의 오류 빈 입력도 “JSON 아님”이므로 정상. 붙여넣으면 사라짐

여기서는 오류 위치를 줄·칸으로 바꿔 주지 않습니다. 어디가 틀렸는지 찾으려면 JSON Formatter에 먼저 넣어 보세요.

언제 쓰나요?

한계

제작·관리 GroundHaus · 오류 제보 · 데이터 처리 안내

자주 묻는 질문

키 순서만 다른 두 JSON도 다르다고 나오나요?

아니요. 파싱한 뒤 키 이름으로 짝을 맞춰 값만 비교하므로 키 순서·들여쓰기·줄바꿈 차이는 "일치"로 나옵니다. 줄 단위로 글자가 다른지 보고 싶다면 텍스트 비교 도구를 쓰세요.

배열 중간에 항목 하나를 넣었는데 그 뒤가 전부 변경으로 나옵니다.

배열은 같은 인덱스끼리 비교하기 때문입니다. [1]에 새 항목이 들어가면 원래 [1]이었던 값은 [2]와 비교되어 전부 밀립니다. id 같은 키로 짝을 맞추는 기능은 없으므로, 비교 전에 두 배열을 같은 기준으로 정렬하거나 객체 형태로 바꿔 넣으세요.

숫자가 분명 다른데 일치로 나옵니다.

두 숫자가 모두 9007199254740991보다 크면 자바스크립트가 정밀도를 잃어 같은 값으로 읽을 수 있습니다. 9007199254740993과 9007199254740992는 이 도구에서 "일치"입니다. 긴 ID는 원본에서 문자열로 받아야 정확히 비교됩니다.