~ / developer / json-diff

🆚 JSON 비교 도구 (diff)

두 JSON의 차이를 추가·삭제·변경으로 나눠 경로와 값까지 보여 줘요. 키 순서는 무시하고 배열 순서 무시 옵션도 있어요.

A (이전)
B (이후)
차이
광고

사용법

  1. 왼쪽 A(이전)에는 기준이 되는 JSON, 오른쪽 B(이후)에는 비교할 JSON을 붙여넣으세요. 입력하는 즉시 결과가 아래에 나와요.
  2. 결과 목록은 추가(+), 삭제(−), 변경(~) 세 종류예요. 각 항목에는 $.addr.city 같은 경로와 이전 값·이후 값이 함께 나와요.
  3. '배열 순서 무시'를 켜면 [1, 2, 3]과 [3, 2, 1]을 같다고 봐요. 객체 배열도 내용을 기준으로 정렬한 뒤 비교해요.
  4. JSON 문법이 틀렸다면 어느 쪽(A/B)이 틀렸는지와 오류 내용을 알려 줘요. 이 계산은 모두 브라우저 안에서만 이뤄져서 입력한 데이터는 서버로 가지 않아요.

어떻게 비교하나요

계산 예시

아래 두 JSON을 비교하면 5가지 차이가 나와요.

A: {"name": "smith", "age": 30, "tags": ["a", "b"], "addr": {"city": "Seoul", "zip": "04524"}}
B: {"age": 31, "name": "smith", "tags": ["a", "c", "d"], "addr": {"city": "Seoul"}, "admin": true}
구분경로내용
변경$.age30 → 31
변경$.tags[1]"b" → "c"
추가$.tags[2]"d"
삭제$.addr.zip"04524"
추가$.admintrue

키 순서가 달라진 name과 age 위치는 차이로 세지 않아요. tags 배열은 인덱스로 비교해서 1번이 바뀌고 2번이 늘었다고 알려 줘요.

어떤 때 쓰나요

경로 표기 읽는 법

경로는 $(최상위)에서 시작해요. 객체의 키는 .키로, 배열의 요소는 [번호]로 이어 가요(번호는 0부터). $.users[2].name은 'users 배열의 세 번째 요소의 name'이에요. 키 이름에 하이픈이나 공백이 들어 있으면 $["a-b"]처럼 대괄호와 따옴표로 표기해요. 이 표기는 JSONPath와 같은 방식이라 다른 도구에서 같은 위치를 찾기 쉬워요.

배열 순서 무시 옵션의 한계

'배열 순서 무시'는 두 배열을 같은 기준으로 정렬한 뒤 앞에서부터 비교해요. 요소가 모두 같은 구조의 단순한 값이거나 객체라면 잘 맞아요. 하지만 배열 요소가 몇 개 달라졌다면 정렬 위치가 밀려서 하나만 다른데도 여러 개가 다르게 나올 수 있어요. 객체 배열에서 id 같은 고유 키로 짝을 맞춰 비교하고 싶다면 먼저 배열을 id 기준으로 정렬하거나 객체로 바꿔서 비교하세요. 이런 방식은 큰 데이터에서는 전문 diff 도구가 더 정확해요.

문법 오류가 나올 때 확인할 것

구조를 보기 좋게 정리하려면 JSON 포매터, 문법만 검사하려면 JSON 검사기를 쓰세요. 일반 텍스트 비교는 텍스트 비교가 더 알맞아요.

자주 하는 실수

모든 비교는 이 브라우저 안에서 이뤄지고 서버로 전송되지 않아요. 아주 큰 JSON(수 MB 이상)은 브라우저가 느려질 수 있어요.

자주 묻는 질문

키 순서가 달라도 같다고 보나요?
네. JSON 객체의 키 순서는 의미가 없어서 무시하고 키 이름과 값으로만 비교해요.
배열 순서가 달라도 같게 볼 수 있나요?
'배열 순서 무시' 옵션을 켜면 같은 요소를 가진 배열은 같다고 봐요. 기본값은 인덱스 순서로 비교해요.
숫자 1과 문자열 "1"은 같은가요?
아니요. 값의 종류가 다르면 변경으로 나와요.
경로 $.a[0].b는 무슨 뜻이에요?
최상위의 a 키에 있는 배열의 첫 번째(0번) 요소 안의 b 값이라는 뜻이에요.
큰 파일도 비교할 수 있나요?
브라우저에서 처리해서 수 MB 정도까지는 괜찮지만, 아주 큰 파일은 느려질 수 있어요. 큰 데이터는 전문 diff 도구를 쓰세요.
입력한 JSON은 어디로 전송되나요?
어디로도 전송되지 않아요. 비교는 이 페이지의 JavaScript가 브라우저 안에서만 처리해요.

관련 도구

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →