JSON 비교 도구

두 JSON 문서를 텍스트가 아닌 구조로 비교

구조 비교: 키 순서와 들여쓰기는 무시합니다
원본 JSON
변경된 JSON
차이점
양쪽 창에 JSON을 붙여넣어 비교하세요.

도구 설명

JSON 비교 도구 정보

JSON diff 도구는 두 문서를 텍스트가 아니라 구조 기준으로 비교하므로, 서식이 아니라 데이터에서 무엇이 달라졌는지를 확인할 수 있습니다.

한쪽에 원본 JSON을, 다른 쪽에 수정된 JSON을 붙여 넣으면 비교 결과가 즉시 갱신되어 추가, 삭제, 변경된 값과 각각의 경로가 표로 정리됩니다.

JSON Diff 도구 사용법

  1. 첫 번째 입력란에 원본 문서를, 두 번째 입력란에 변경된 문서를 붙여 넣습니다.
  2. 상단에 +N -N ~N 형태로 표시되는 요약 카운터로 변경 규모를 파악합니다.
  3. 결과 표를 훑어봅니다. 변경 유형, 경로, 변경 전 값, 변경 후 값 순서입니다.
  4. a.b[2] 같은 경로를 따라 원본 파일로 돌아갑니다. 키는 점으로 이어지고 배열은 인덱스로 표기됩니다.

이럴 때 사용합니다

  • 스테이징 JSON 설정과 프로덕션 설정처럼, 두 환경의 구성을 비교할 때.
  • 새 응답 구조에 의존하기 전에, 서비스 두 버전 사이에서 API 응답이 어떻게 달라졌는지 검토할 때.
  • package-lock.json이나 그 밖에 자동 생성된 의존성 매니페스트 안에서 실제로 무엇이 움직였는지 조사할 때.
  • 어떤 도구가 인프라 코드 파일이나 Kubernetes 매니페스트를 다시 직렬화한 뒤 무엇을 바꿨는지 확인할 때.

경로와 변경 유형을 표기하는 방식

모든 행은 문서 안의 한 위치를 가리키며, 코드에서 값을 읽을 때와 같은 방식으로 표기하므로 원본 파일에서 찾기 쉽습니다.

  • 추가: 해당 경로가 변경된 문서에만 존재하며, 변경 후 값 열에 새 값이 표시됩니다.
  • 삭제: 해당 경로가 원본에만 존재하며, 변경 전 값 열에 원래 있던 값이 표시됩니다.
  • 변경: 해당 경로가 양쪽에 있으나 값이 다르므로 두 열이 모두 채워집니다.
  • a.b[2] 같은 경로는 객체 a 안의 키 b, 그리고 그 배열의 인덱스 2번 요소를 뜻합니다.

JSON 비교 자주 묻는 질문

파일 서식만 바꿨는데 왜 차이가 하나도 나오지 않나요?
양쪽을 먼저 구문 분석하기 때문입니다. 들여쓰기, 키 순서, 줄바꿈 문자는 분석된 구조의 일부가 아니므로 차이로 표시되지 않습니다.
배열에 요소 하나를 넣었을 뿐인데 왜 그 뒤가 전부 변경으로 표시되나요?
배열은 인덱스로 비교합니다. 요소를 삽입하면 뒤따르는 모든 요소가 새 위치로 밀리므로, 밀린 위치마다 변경으로 보고됩니다. 결함이 아니라 위치 기반 비교의 본질적인 특성입니다.
한쪽이 유효한 JSON이 아니면 어떻게 되나요?
두 입력 모두 구문 분석에 성공해야 합니다. 어느 한쪽이라도 형식이 잘못되면 비교 대신 구문 분석 오류가 표시됩니다.
두 문서가 같을 때는 무엇이 표시되나요?
실패처럼 보일 수 있는 빈 결과를 남기는 대신, 구조적 차이가 없다는 사실을 명시적으로 알려 줍니다.
제 데이터가 어딘가로 업로드되나요?
아닙니다. 구문 분석과 비교는 microdiff 라이브러리를 사용해 브라우저 안에서 로컬로 실행되므로, 붙여 넣은 내용이 wetool.site나 다른 어떤 서버로도 전송되지 않습니다.

JSON diff와 일반 텍스트 diff

텍스트 diff는 문자 단위의 줄을 비교하므로, 키 순서가 바뀌거나 들여쓰기가 2칸에서 4칸으로 바뀌거나 줄바꿈 문자가 달라지기만 해도 데이터가 동일한데 차이로 잡히고, 실제 수정 사항은 그 잡음에 묻힙니다. JSON diff는 두 문서를 먼저 구문 분석한 뒤 의미상의 차이만 보고하므로 키 순서와 서식은 무시됩니다. 바이트가 정확히 중요할 때는 텍스트 diff를, 데이터만 중요할 때는 이 도구를 사용하십시오.

결과를 오해 없이 읽기

구조 비교는 좁은 질문에 정확하게 답합니다. 그래서 이 표가 무엇을 알려 주고 무엇을 알려 주지 않는지 알아 두면 도움이 됩니다.

  • 한 배열에 변경이 길게 몰려 있다면, 대개 독립적인 수정이 여러 건 있었다기보다 삽입 한 번 또는 순서 변경 한 번을 뜻합니다.
  • 타입도 구분됩니다. 문자열 1과 숫자 1은 서로 다른 값이므로 변경으로 보고됩니다.