데이터·개발
JSON 오류 위치 찾기와 수정, 정렬하는 방법
파서가 읽지 못하는 대표적인 JSON 실수(따옴표·쉼표·주석·True/False)를 찾고 고치는 방법과 정렬·압축·트리 보기 사용법을 설명합니다.
게시일:
예시: 읽히지 않는 설정 파일
얼핏 보면 괜찮아 보이지만, 모든 JSON 파서가 오류를 냅니다.
{
'name': "남산서울타워",
"height_m": 236,
"open": True,
"tags": ["전망대", "관광",],
// 1980년 개방
}
오류를 하나씩 찾기
- JSON 정렬을 열고 입력(JSON) 에 붙여 넣습니다.
- 문법 검사만(또는 정렬하기)을 누릅니다. 첫 번째 오류에서 멈추고 줄·열 번호와 오류 위치를 보여 줍니다.
- 그 한 곳을 고치고 다시 검사합니다. 올바른 JSON입니다. 가 나올 때까지 반복합니다.
이 예시에서는 다음 순서로 오류가 나옵니다.
| 줄 | 내용(요약) | 고치는 법 |
|---|---|---|
| 2 | 문자열과 키는 큰따옴표로 감싸야 함 | 'name' → "name" |
| 4 | True 는 JSON 값이 아님(소문자 사용) |
True → true |
| 5 | 닫는 괄호 앞의 불필요한 쉼표 | "관광" 뒤의 , 삭제 |
| 6 | JSON에는 주석을 쓸 수 없음 | 주석 줄 삭제 |
| 5 | 불필요한 쉼표(주석을 지우면 "tags" 가 마지막 항목이 됨) |
] 뒤의 , 삭제 |
고친 JSON:
{
"name": "남산서울타워",
"height_m": 236,
"open": true,
"tags": ["전망대", "관광"]
}
자주 있는 원인
- 작은따옴표: JSON의 문자열과 키는
"큰따옴표"만 씁니다. - 끝의 쉼표: JavaScript에서는 되지만 JSON에서는 안 됩니다.
- 주석:
//나/* */는 JSON 문법에 없습니다. 메모가 필요하면"note"같은 항목으로 넣으세요. - Python·JavaScript 값:
True,False,None,undefined,NaN은 JSON이 아닙니다.true,false,null을 씁니다. - 문자열 안의 줄바꿈·탭: 문자열 안에서는
\n,\t로 써야 합니다. - 중간에 잘림: “JSON이 중간에 끝났습니다”는 대부분
}나]가 빠진 경우입니다. API 응답을 일부만 복사했을 때 자주 생깁니다.
정렬·압축·트리 보기
- 정렬하기: 줄바꿈과 들여쓰기(들여쓰기 에서 공백 2·4칸 또는 탭)를 넣어 구조를 읽기 쉽게 합니다.
- 한 줄로 압축: 불필요한 공백을 모두 빼서 가장 짧은 한 줄로 만듭니다. URL 파라미터나 환경 변수에 넣을 때 편합니다.
- 트리 보기: 객체와 배열을 접고 펼 수 있게 보여 줍니다. 모두 펼치기·모두 접기 로 깊게 중첩된 API 응답도 쉽게 살필 수 있습니다.
문법은 맞지만 주의할 것
- 큰 숫자:
{"id": 12345678901234567890}은 올바른 JSON이지만, JavaScript의JSON.parse로 읽으면12345678901234567000으로 바뀝니다. 이 도구는 숫자를 적힌 그대로 유지하므로 ID가 몰래 바뀌지 않습니다. 직접 만든 프로그램에서 큰 ID가 정확해야 한다면 문자열로 다루는 편이 안전합니다. - 중복 키:
{"a": 1, "a": 2}는 대부분의 파서가 받아들이고 마지막 값만 남깁니다. 이 도구는 경고와 함께 중복 위치를 목록으로 보여 줍니다.
함께 하면 좋은 작업
- 객체 배열을 스프레드시트로 열려면 JSON·CSV 변환.
- 두 JSON의 차이를 보려면 텍스트 비교. 먼저 둘 다 정렬해 두면 차이가 잘 맞춰집니다.