이게 뭔가요?
두 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에 먼저 넣어 보세요.
언제 쓰나요?
- API 응답이 배포 전후로 어떻게 바뀌었는지 확인할 때. 바뀐 키 경로만 바로 나오므로 전체 응답을 눈으로 훑을 필요가 없습니다.
- 개발·운영 설정 파일(
config.dev.json,config.prod.json)에서 서로 빠진 키를 찾을 때. - 테스트 기댓값과 실제 응답을 대조할 때.
- YAML 설정을 비교해야 하면 YAML ↔ JSON으로 바꿔서 넣으면 됩니다.
한계
- 특정 키를 무시하거나(예:
updatedAt), 배열을 id로 짝 맞추거나, 문자열의 공백·대소문자를 무시하는 옵션은 없습니다. - 키 이름에 점이 들어 있으면(
"a.b") 경로 표시가 중첩 키a→b와 구분되지 않습니다. - 차이가 500개에 도달하면 그 이후는 세지 않고 “500개까지만 표시했습니다” 안내가 나옵니다. 요약 숫자도 그 시점까지만 집계됩니다.
- 결과 표를 파일로 내려받는 기능은 없습니다.