JSON 뷰어란?
JSON 뷰어는 날것의 JSON 문자열을 읽히는 형태로 — 들여쓰기하고, 색을 입히고, 접었다 펼 수 있게 — 바꿔 보여주는 도구다. 이 뷰어는 입력하는 동안 계속 검증해서 문법 오류가 난 위치를 짚어 주고, 포맷된 코드·접히는 트리·배열을 행으로 펼친 표 셋을 오가며 같은 데이터를 볼 수 있게 한다.
모든 처리는 브라우저 안에서 끝난다. 붙여넣은 JSON 은 사용자의 기기에서 파싱되고 서버로 올라가지 않는다. 토큰이나 고객 데이터가 섞인 API 응답처럼 남의 서비스에 붙여넣기 꺼려지는 것도 그대로 열어볼 수 있다.
JSON is a text format that facilitates structured data interchange between all programming languages.
기능
- 입력하는 동안 검증
- 한 글자마다 파싱한다. 깨진 JSON 이면 파서가 멈춘 위치와 메시지를 같이 보여줘서, 빠진 쉼표나 따옴표 없는 키를 눈으로 찾지 않아도 된다.
- 같은 데이터를 세 가지로
- 포맷된 코드, 접었다 펼 수 있는 트리, 객체 배열을 행과 열로 펼친 표. 데이터 모양에 따라 읽기 편한 쪽으로 바꿔 본다.
- 포맷과 압축
- 읽으려면 일정한 들여쓰기로 펼치고, 설정값이나 쿼리스트링·요청 본문에 넣으려면 군더더기 바이트를 모두 걷어낸다.
- 큰 응답을 견딘다
- 트리는 컬렉션의 앞 100개만 먼저 그리고 필요할 때 더 편다. 표는 페이지를 나눈다. 수 메가바이트짜리 응답을 열어도 화면이 멈추지 않는다.
- 파일과 클립보드
- 10MB 까지의 .json 파일을 열 수 있고, 정리된 결과를 한 번에 클립보드로 가져간다.
사용법
- 1
JSON 을 붙여넣는다
왼쪽 편집기에 JSON 을 붙여넣거나 입력한다. 컴퓨터에 있는 .json 파일을 열어도 된다.
- 2
유효한지 확인한다
상태 표시줄이 파싱 결과를 알려준다. 깨졌다면 오류 메시지와 파싱이 멈춘 위치가 함께 나온다.
- 3
포맷하거나 압축한다
Format 으로 들여쓰기해 펼치고, Minify 로 한 줄로 접는다.
- 4
구조를 훑는다
오른쪽 패널을 트리로 바꿔 중첩된 객체를 접었다 펴거나, 표로 바꿔 객체 배열을 행 단위로 읽는다.
- 5
결과를 가져간다
다 봤으면 정리된 JSON 을 클립보드로 복사한다.
큰 정수는 조용히 정밀도를 잃는다
JSON.parse 는 모든 숫자를 자바스크립트 double 로 만든다. 정수를 정확히 담는 한계는 2^53 − 1(9,007,199,254,740,991)이다. 트위터식 64비트 ID 인 9007199254740993 은 9007199254740992 로 파싱된다 — 하나 어긋나는데, 오류도 경고도 없다. Snowflake ID, 카프카 오프셋, bigint 컬럼을 JSON 숫자로 직렬화한 값이 모두 같은 일을 겪는다.
이 뷰어는 파서가 만들어 낸 값을 보여주므로, 들어오면서 바뀐 값은 붙여넣은 원문과 달라 보인다. 그게 보이면 고칠 곳은 만드는 쪽이다 — 큰 식별자는 JSON 문자열로 직렬화한다. RFC 8259 §6 은 상호운용성이 배정밀도 범위 안에서만 보장된다고 못박아 두었고, 이 문제를 겪고 살아남은 API 들이 지금 ID 를 문자열로 보내는 이유가 그것이다.
자주 묻는 질문
붙여넣은 JSON 이 서버로 올라가나?
올라가지 않는다. 이 도구는 내용을 받는 백엔드가 없는 정적 페이지다. 파싱·포맷·검증이 모두 사용자의 기기에서 자바스크립트로 처리되므로 붙여넣은 JSON 은 브라우저 밖으로 나가지 않는다.
무료인가?
무료다. 계정도 사용량 제한도 없다. 사이트는 광고로 유지된다.
얼마나 큰 파일까지 열 수 있나?
파일 열기는 10MB 까지의 .json 을 받는다. 붙여넣기는 브라우저 메모리가 허용하는 만큼 가능하고, 트리와 표가 큰 컬렉션을 나눠 그리므로 화면이 멈추지 않는다.
멀쩡해 보이는데 유효하지 않다고 나온다
마지막 요소 뒤의 쉼표, 큰따옴표 대신 쓴 작은따옴표, 따옴표 없는 키, 주석이 가장 흔한 원인이다. 자바스크립트 객체 리터럴이나 JSON5 에서는 되지만 JSON 표준은 넷 다 허용하지 않는다. 오류 메시지에 파싱이 멈춘 위치가 나온다.
포맷과 압축은 뭐가 다른가?
포맷은 줄바꿈과 들여쓰기를 넣어 사람이 구조를 읽을 수 있게 펼치는 것이고, 압축은 파서에 필요 없는 공백과 줄바꿈을 모두 걷어내 가장 작은 문서를 만드는 것이다. 설정값·쿼리 파라미터·요청 본문에 넣을 때 압축을 쓴다.
JSON 배열을 표로 볼 수 있나?
볼 수 있다. 문서가 객체 배열이면 표 보기가 객체의 키에서 열을 뽑아 요소마다 한 행씩 보여주고, 100행 단위로 페이지를 나눈다. 객체 하나뿐이면 키-값 표로 보여준다.
오프라인에서도 되나?
페이지가 한 번 열리고 나면 네트워크 없이도 포맷과 검증이 계속 동작한다. 모든 처리를 이미 브라우저에서 돌고 있는 자바스크립트가 하기 때문이다.
여기서 막힌다면
이 도구가 따르는 규격
- RFC 8259 — JSON 데이터 교환 형식 — 현행 JSON 표준. 마지막 쉼표·주석·작은따옴표를 왜 거부하는지가 여기 있다.
- ECMA-404 — JSON 데이터 교환 문법 — RFC 8259 와 나란히 유지되는 같은 규격의 문법 쪽.
- MDN — JSON.parse() — 이 도구가 쓰는 파서. 오류 위치도 여기서 나온다.