tigtools

JSON Diff

두 JSON 문서를 붙여넣어 $.order.items[2].price와 같은 경로별로 어떤 값이 다른지 정확히 확인하세요.

브라우저에서 실행 가입 불필요

배열 비교
보기

사용 방법

  1. 원본 JSON을 왼쪽에, 변경된 JSON을 오른쪽에 붙여넣거나 예제를 사용해 보세요.
  2. 배열 비교 방식을 선택하세요. 위치 기준으로 비교하거나, 삽입된 항목이 한 번만 보고되도록 항목을 일치시켜 비교합니다.
  3. 차이를 목록이나 나란히 보기로 확인하세요. 각 차이에는 루트($)부터의 경로가 표시됩니다.
  4. 보고서를 복사해 티켓이나 코드 리뷰에 붙여넣으세요.

작동 방식

두 문서는 텍스트가 아닌 데이터로 파싱되어 비교됩니다. 객체는 키별로 비교되므로 키 순서, 공백, 들여쓰기는 중요하지 않습니다. 숫자는 값으로 비교되므로 1과 1.0은 같습니다.

각 차이에는 JSONPath 표현식처럼 작성된 경로가 있습니다. $는 루트, .name은 속성, [2]는 배열 인덱스이며, 단순한 이름이 아닌 키는 $["first-name"]처럼 따옴표로 표시됩니다. 차이 유형은 추가됨(오른쪽에만 있음), 제거됨(왼쪽에만 있음), 변경됨(유형 동일, 값 다름), 유형 변경됨(예: 숫자 44.9가 문자열 "44.90"이 되거나 값이 null이 됨)의 네 가지로 보고됩니다. 객체나 배열 전체가 추가되거나 제거되면 필드별로 한 번씩 보고하지 않고 해당 경로에서 한 번만 보고합니다.

배열은 기본적으로 위치별로 비교됩니다. 항목 0은 항목 0과, 항목 1은 항목 1과 비교합니다. 시작 부분에 항목이 삽입되면 그 뒤의 모든 항목이 변경된 것처럼 보입니다. ‘이동된 항목 일치’는 먼저 동일한 항목의 최장 공통 부분 수열을 사용하여 두 배열을 정렬하므로 삽입이나 삭제는 한 번만 보고되고 나머지 항목은 서로 짝지어집니다. 추가된 항목은 오른쪽의 인덱스를 사용하고, 제거된 항목은 왼쪽의 인덱스를 사용합니다. 매우 큰 배열(약 200만 개 항목 쌍 초과)에서는 일치 작업을 건너뛰고 위치별로 비교합니다.

목록의 키 경로는 각 객체 내에서 알파벳순으로 정렬됩니다. 최대 2,000개의 차이가 표시되며 복사된 보고서에는 항상 모든 차이가 포함됩니다.

예시

API 변경 확인

같은 주문에 대해 어제와 오늘의 응답을 비교합니다. 비교 결과에는 $.status가 'pending'에서 'shipped'로 변경되고, $.total의 유형이 숫자에서 문자열로 바뀌고, $.coupon이 제거되고 $.customer.phone이 추가된 내용이 표시됩니다.

설정 드리프트

스테이징과 프로덕션 환경의 JSON 설정을 붙여넣으세요. 키 순서는 무시되므로, 파일이 서로 다른 도구로 저장되었더라도 $.cache.ttl 300 → 60 같은 실제 차이만 표시됩니다.

항목이 삽입된 목록

상품 목록 맨 앞에 새 항목이 추가되었습니다. 위치 기준으로 비교하면 모든 상품이 변경된 것처럼 보이지만, “이동된 항목 일치”를 사용하면 “추가됨 $[0]” 한 건만 표시됩니다.

자주 묻는 질문

텍스트 diff와 무엇이 다른가요?

텍스트 diff는 줄 단위로 비교하므로 키 순서를 바꾸거나 형식을 다시 지정하면 변경으로 표시됩니다. 이 도구는 파싱된 데이터를 비교하므로 값, 타입, 구조의 차이만 보고됩니다.

항목 하나를 삽입했는데 배열에 변경 사항이 많이 표시되는 이유는 무엇인가요?

“위치 기준” 모드에서는 같은 인덱스의 항목끼리 비교하므로, 항목이 하나 삽입되면 그 뒤의 모든 항목이 밀립니다. “이동된 항목 일치”로 전환하면 동일한 항목을 먼저 맞춥니다.

“1”과 1은 같게 처리되나요?

아닙니다. 하나는 문자열이고 다른 하나는 숫자이므로 타입 변경으로 보고됩니다. 타입이 같은 값은 정확히 비교됩니다.

매우 큰 파일도 비교할 수 있나요?

몇 메가바이트 크기의 파일은 처리할 수 있지만, 모든 작업이 브라우저 메모리에서 처리되므로 매우 큰 문서는 휴대폰에서 느릴 수 있습니다.

개인정보 보호

두 문서는 브라우저에서만 파싱되고 비교됩니다. 업로드되거나 저장되거나 분석에 포함되지 않습니다.