← JSON 도구로 돌아가기

JSON 비교

최종 업데이트: 2026년 10월 2일

두 JSON 문서를 비교해 실제로 다른 부분만 보여 줍니다. 비교는 구조로 하므로 키를 다시 정렬하거나 서식을 바꿔도 차이가 되지 않습니다. 실제 변경을 경로별로 나열하며, 모든 처리는 브라우저 안에서 이루어집니다.

텍스트가 아닌 구조 키 순서 무시 브라우저에서 실행 업로드 없음 오픈 소스 (MIT)

구조 비교가 보는 것

두 문서는 먼저 구문 분석되고, 그다음 함께 순회됩니다. 보고되는 것은 데이터 자체의 차이뿐입니다. 한쪽에만 있는 키, 값의 변경, 또는 형식이 바뀐 값 — 숫자가 문자열이 되거나 객체가 배열이 된 경우입니다. 공백과 키 순서는 비교에 전혀 관여하지 않습니다. 구문 분석 후에는 존재하지 않기 때문입니다.

형식 변경은 그것이 일어난 경로에서 한 번만 보고됩니다. 아래의 모든 잎 노드마다 삭제와 추가로 펼쳐지지 않습니다. 하위 트리 전체가 모양을 바꿀 때 보고서를 읽기 쉽게 유지해 줍니다.

이것이 텍스트 줄 비교가 아닌 이유

텍스트 비교——git diff가 보여 주는 것——는 줄을 비교합니다. JSON에서는 이것이 자주 오해를 부릅니다. JSON을 다른 도구나 다른 버전의 라이브러리가 생성하면 들여쓰기를 다시 하거나 같은 키를 다른 순서로 출력하는 일이 흔한데, 줄 비교는 데이터가 동일한데도 그것을 수많은 변경처럼 보이게 만듭니다.

아래 두 문서는 같은 문서입니다. 줄 비교는 네 줄의 변경을 보고하지만, 이 도구는 아무것도 보고하지 않습니다.

{"a": 1, "b": 2}

{
  "b": 2,
  "a": 1
}

반대도 성립하며, 그 부분이 유용합니다. 키 이름의 한 글자 변경이나 숫자가 3에서 4로 바뀐 것은 정확히 변경 하나로 나타나고, 서식 잡음에 묻히지 않습니다.

경로 표기 읽는 법

모든 변경은 경로로 보고됩니다. $는 문서 루트이고, 점은 객체 키로 들어가며, 대괄호는 배열 인덱스입니다. 따라서 $.settings.indent는 settings 안의 indent 키이고, $.features[2]는 features 배열의 세 번째 항목이며, $["weird key"]는 단순한 식별자가 아닌 키를 나타냅니다. 표기는 JSON Pointer와 같은 방식이라, 보고서의 경로를 그대로 다른 JSON 도구에 붙여 넣을 수 있습니다.

비교가 알려 주지 않는 것

자주 묻는 질문

키 순서가 비교 결과에 영향을 주나요?

아니요. 두 문서는 비교 전에 먼저 구문 분석되며, 객체의 키는 위치가 아니라 이름으로 맞춥니다. 따라서 서식을 다시 정리하거나 키를 다른 순서로 출력해도 차이는 비어 있게 나오며, 데이터가 같으므로 이것이 올바른 결과입니다.

배열 맨 앞에 항목 하나를 넣었을 뿐인데 왜 이렇게 많은 차이가 나오나요?

배열은 위치로 맞춥니다. 거의 모든 구조 비교 도구가 그렇습니다. 긴 배열 맨 앞에 항목을 넣으면 그 뒤의 모든 요소가 한 칸씩 밀리므로, 값이 이동했을 뿐인데도 각각이 변경으로 보고됩니다. 맞출 키가 없으면 어떤 항목이 삽입이고 어떤 것이 변경인지 알 방법이 없습니다. 항목에 안정적인 id가 있다면 비교 전에 양쪽을 그 id로 정렬하세요.

한쪽이 유효한 JSON이 아니면 어떻게 되나요?

비교가 멈추고, 실패한 쪽의 구문 분석기 자체 메시지를 왼쪽인지 오른쪽인지와 함께 표시합니다. 둘 다 구문 분석되지 않으면 두 문서를 함께 순회할 수 없으므로 비교는 이루어지지 않습니다.

제 JSON이 어딘가로 업로드되나요?

아니요. 두 문서는 브라우저에서 JSON.parse로 구문 분석되고 메모리에서 비교됩니다. 그것들을 실어 보내는 요청이 없고, 계정이나 서버 측 저장도 없습니다. 페이지를 불러온 뒤 네트워크를 끊어도 비교는 그대로 동작합니다.

값이 변경된 것이 아니라 이동했음을 판별할 수 있나요?

아니요. 이 도구는 차이를 보고할 뿐 패치를 만들지 않습니다. JSON Patch 문서를 출력하지 않고, 한곳에서 다른 곳으로 이동한 값을 감지하지 않습니다. 이전 경로의 삭제와 새 경로의 추가로 나타납니다.

주석이나 마지막 쉼표가 있는 JSON도 비교할 수 있나요?

아니요. 비교는 사이트의 다른 도구와 같은 엄격한 구문 분석기를 사용하므로 JSON5, 주석, 마지막 쉼표는 거부됩니다. 구문 분석에 실패하면 먼저 포매터나 검증기로 문제 위치를 확인하세요.

JSON을 표로 만들어야 하나요? JSON을 CSV로 변환을 쓰면 됩니다. 버그를 발견했나요? 문의하기.