JSON 검사는 '읽을 수 있는가'와 '그대로 전달되는가'를 함께 봅니다
JSON은 RFC 8259와 ECMA-404가 정한 문법을 따르는 글입니다. 객체는 중괄호 { }로, 배열은 대괄호 [ ]로 묶고, 키와 문자열은 큰따옴표로 감싸며, 값으로는 문자열·숫자·true·false·null·객체·배열만 씁니다. 이 규칙에서 한 글자라도 벗어나면 받는 쪽 프로그램은 문서 전체를 읽지 못합니다. JavaScript의 JSON.parse는 끝 쉼표 하나, 작은따옴표 하나에도 SyntaxError를 냅니다.
이 검사기는 붙여 넣은 글을 표준 문법 그대로 엄격하게 읽습니다. 문법이 틀리면 해석이 멈춘 줄과 칸, 그 앞뒤 줄, 닫히지 않은 괄호가 열린 자리를 보여 주고, 사람이 손으로 고친 설정이나 다른 언어에서 복사한 글에 흔한 표기(주석·끝 쉼표·작은따옴표·따옴표 없는 키·True 등)는 자동으로 고칠 수 있게 묶어 줍니다. 문법이 맞으면 구조를 접고 펴는 트리로 보여 주고, 값을 고르면 그 값까지의 경로와 값이 차지하는 크기를 함께 보여 줍니다.
문법이 맞아도 받는 프로그램에서 값이 바뀌는 경우가 있습니다. 같은 키가 두 번 나오면 대부분 앞의 값이 사라지고, 9007199254740993 같은 큰 정수는 JavaScript에서 9007199254740992로 읽힙니다. 이런 곳은 오류와 구분해 아래 '주의' 목록에 따로 모읍니다.
JSON을 검사하고 펼쳐 봐야 하는 때
- API 응답을 확인할 때: 응답이 한 줄로 길게 붙어 오면 어떤 값이 어디에 들어 있는지 알기 어렵습니다. 붙여 넣으면 트리로 펼쳐지고, 필요한 값을 눌러
$.items[2].price같은 경로를 바로 복사할 수 있습니다. - 설정 파일을 고친 뒤: package.json, tsconfig.json, VS Code 설정처럼 손으로 고치는 파일은 쉼표 하나가 빠져도 프로그램이 시작되지 않습니다. 저장하기 전에 붙여 넣어 보면 몇째 줄인지 바로 나옵니다. tsconfig.json처럼 주석을 허용하는 파일을 다른 도구로 넘길 때는 자동 고침으로 주석을 걷어 낸 사본을 만들 수 있습니다.
- 로그·채팅에서 복사한 JSON: 메신저나 문서 편집기를 거친 글은 따옴표가 둥근 따옴표로 바뀌거나, 웹 페이지의 특수 공백이 섞이거나, 파이썬 출력처럼 작은따옴표와 True가 들어 있기도 합니다. 눈으로는 구분되지 않는 이런 글자를 위치와 함께 짚어 줍니다.
- 응답이 무거운 이유를 찾을 때: 무게 지도는 고른 객체나 배열 아래 값마다 차지하는 바이트를 넓이로 그립니다. 썸네일을 base64로 담은 필드나 같은 내용이 반복되는 배열처럼 크기를 키우는 곳이 한눈에 보입니다.
- 다른 시스템에 보내기 전에: 주문 번호나 트윗 ID처럼 큰 정수, 같은 객체 안의 중복 키, 짝이 맞지 않는 이모지 이스케이프는 문법 검사만으로는 드러나지 않지만 받는 쪽에서 값이 달라집니다. 주의 목록에서 미리 확인하세요.
쓰는 법
- 원문 칸에 JSON을 붙여 넣거나, 파일 열기·끌어다 놓기로 .json 파일을 엽니다. 입력이 멈추면 바로 검사하며, Ctrl+Enter(맥은 ⌘+Enter)로 즉시 다시 검사할 수도 있습니다.
- 오류가 있으면 아래에 오류 진단과 자동 고침이 나옵니다. 상태 줄의 '오류 위치로'를 누르면 원문 칸의 그 글자로 커서가 갑니다. 자동으로 고칠 수 있는 표기만 있으면 'N곳 고쳐서 원문에 넣기'로 한 번에 고치고, 마음에 들지 않으면 상태 줄의 되돌리기를 누릅니다.
- 문법이 맞으면 왼쪽 트리에서 값을 고릅니다. 삼각형이나 두 번 누르기로 가지를 펴고 접으며, 방향키로도 움직일 수 있습니다. 원문 칸에서 커서를 옮기면 트리도 그 값으로 따라갑니다.
- 오른쪽 살펴보기에서 경로 표기(JSONPath·JavaScript·Python·jq·JSON Pointer)를 고르고 '경로 복사'를 누릅니다. '값 복사'는 고른 값만 2칸 들여쓰기 JSON으로 복사합니다(문자열은 따옴표를 뗀 글자).
- 원문 칸 아래 버튼으로 2칸·4칸 들여쓰기 정리나 한 줄 압축을 하고, 복사하거나 .json 파일로 저장합니다. 정리할 때 숫자는 쓴 글자 그대로 두고 중복 키도 지우지 않습니다.
오류 안내와 고치는 법
표의 입력을 이 검사기에 넣으면 가운데 열의 안내가 나옵니다. 위치는 해석이 멈춘 글자를 가리킵니다. 쉼표가 빠진 경우만은 멈춘 곳이 아니라 쉼표가 들어가야 할 자리, 곧 앞 값 바로 뒤를 짚습니다. 줄 끝에서 쉼표를 빠뜨리는 실수가 가장 흔해서, 다음 줄 첫 글자보다 앞 줄 끝을 보여 주는 편이 찾기 쉽기 때문입니다.
| 입력 예 | 이 검사기의 안내 | 고치는 법 |
|---|---|---|
[1, 2, 3,] | 마지막 항목 뒤에 쉼표가 있습니다 | 닫는 괄호 앞 쉼표를 지웁니다 |
{"a": 1 "b": 2} | 항목 사이에 쉼표가 빠졌습니다 | 1 바로 뒤에 쉼표를 넣습니다 |
{'a': 1} | 문자열은 큰따옴표로 감싸야 합니다 | 'a'를 "a"로 바꿉니다 |
{a: 1} | 큰따옴표가 없는 키입니다: a | 키를 "a"로 감쌉니다 |
{"a": 1, /* 메모 */ "b": 2} | JSON에는 주석을 쓸 수 없습니다 | 주석을 지웁니다 |
{"ok": True} | JSON 값이 아닌 파이썬 표기입니다: True | 소문자 true로 씁니다 |
{"avg": NaN} | JSON에 없는 값입니다: NaN | null이나 문자열로 바꿉니다 |
{"zip": 04001} | 숫자 앞에 0을 붙일 수 없습니다: 04001 | "04001"처럼 문자열로 씁니다 |
["첫 줄↵둘째 줄"] | 문자열 안에서 줄이 바뀌었습니다 | 줄바꿈을 \n으로 적습니다 |
{"path": "C:\Users\minji"} | JSON에 없는 이스케이프입니다: \U | 역슬래시를 \\로 두 번 적습니다 |
{"data": [1, 2 | 문서가 끝났는데 닫히지 않은 괄호가 있습니다 | 잘린 문서인지 확인하고, 끝났다면 ]}를 붙입니다 |
{"a": 1}↵{"a": 2} | JSON 값이 끝난 뒤에 글자가 더 있습니다 | 배열로 묶거나 JSONL로 다룹니다 |
{“a”: 1} | 곧은 따옴표가 아닌 둥근 따옴표입니다: “ | 곧은 큰따옴표 "로 바꿉니다 |
문서가 끝났는데 괄호가 열려 있으면 진단에 '끝에 필요한 닫는 글자'가 안쪽부터 나옵니다. {"data": [1, 2라면 ]}입니다. 다만 로그나 화면에서 복사하다 잘린 응답이라면 뒷부분 자료가 빠진 상태이므로, 괄호만 붙여 문법을 맞추기보다 원래 응답을 다시 받는 편이 맞습니다.
자동 고침이 바꾸는 것과 바꾸지 않는 것
자동 고침은 JSON5·JSONC 같은 확장 형식, 파이썬·JavaScript 코드, 문서 편집기를 거치며 생기는 표기를 표준 JSON으로 바꿉니다. 줄 배치와 들여쓰기는 그대로 두고 해당 글자만 바꾸며, 주석만 있던 줄은 줄째 지웁니다. 고친 결과를 다시 엄격하게 검사해 통과할 때만 'N곳 고쳐서 원문에 넣기' 버튼이 나옵니다. 고칠 수 있는 표기가 있어도 다른 오류가 남으면 버튼 대신 그 오류부터 고치라고 안내합니다.
| 고치는 표기 | 입력 | 자동 고침 결과 |
|---|---|---|
| 주석 | {"a": 1 /* 메모 */} | {"a": 1 } |
| 끝 쉼표 | [1, 2, 3,] | [1, 2, 3] |
| 빠진 쉼표 | {"a": 1 "b": 2} | {"a": 1, "b": 2} |
| 작은따옴표 문자열 | {'name': 'it\'s'} | {"name": "it's"} |
| 둥근 따옴표 | {“name”: “민지”} | {"name": "민지"} |
| 따옴표 없는 키 | {name: "민지", 2024: true} | {"name": "민지", "2024": true} |
| 파이썬·대문자 값 | [True, False, None, NULL] | [true, false, null, null] |
| NaN·Infinity·undefined | [NaN, Infinity, -Infinity, undefined] | [null, null, null, null] |
| +1·.5·5.·0x1F 숫자 | [+1, .5, 5., 0x1F] | [1, 0.5, 5.0, 31] |
| 문자열 안 줄바꿈·탭 | ["첫 줄↵둘째 줄", "a→b"] | ["첫 줄\n둘째 줄", "a\tb"] |
| 특수 공백(NBSP) | {"a":⍽1} | {"a": 1} |
| 맨 앞 BOM | [BOM]{"a": 1} | {"a": 1} |
NaN·Infinity·undefined를 null로 바꾸는 것은 뜻이 달라지는 고침입니다. JSON 숫자에는 무한대와 NaN이 없어서 표준 안에서 쓸 수 있는 자리는 null뿐이지만, 받는 프로그램이 '값 없음'과 'NaN'을 구분해야 한다면 문자열로 바꾸는 편이 낫습니다. 16진수는 2⁵³−1을 넘지 않을 때만 10진수로 바꿉니다.
다음은 일부러 고치지 않습니다. 앞자리 0이 붙은 숫자(04001)는 우편번호처럼 글자여야 하는지 숫자여야 하는지 알 수 없습니다. 쉼표가 겹친 [1,,2]는 빈 값을 넣으려던 것인지 알 수 없고, 잘린 문서는 빠진 내용을 되살릴 수 없습니다. 한 줄에 객체 하나씩 쓴 JSONL은 고칠 대상이 아니라 다른 형식이므로 JSON 배열 ↔ JSONL 변환기를 쓰세요. 쉼표가 빠진 배열 항목도 같은 줄에 붙어 있으면([1 -2], ["a" "b"]) 고치지 않습니다. 파이썬·JavaScript에서는 1에서 2를 빼거나 두 문자열을 이어 붙이는 식이라 쉼표를 넣으면 뜻이 달라지기 때문입니다. 쉼표는 줄이 바뀐 곳과 객체의 키 앞에서만 넣습니다.
경로 표기 다섯 가지
트리에서 값을 고르면 그 값까지의 경로를 다섯 가지로 적어 줍니다. 같은 값이라도 쓰는 곳에 따라 표기가 다릅니다. JSONPath는 Postman·여러 API 테스트 도구와 데이터베이스 질의에, JavaScript·Python 표기는 코드에, jq는 명령줄에, JSON Pointer는 JSON Patch(RFC 6902)나 JSON Schema의 $ref에 씁니다. JavaScript·Python 표기의 data는 JSON을 읽어 담은 변수 이름이라고 보면 됩니다.
| JSONPath | JavaScript | Python | jq | JSON Pointer |
|---|---|---|---|---|
$.items[2].options.gift_wrap | data.items[2].options.gift_wrap | data["items"][2]["options"]["gift_wrap"] | .items[2].options.gift_wrap | /items/2/options/gift_wrap |
$.headers['x-request-id'] | data.headers["x-request-id"] | data["headers"]["x-request-id"] | .headers["x-request-id"] | /headers/x-request-id |
$.주소.도시 | data.주소.도시 | data["주소"]["도시"] | .["주소"]["도시"] | /주소/도시 |
$['a/b']['m~n'] | data["a/b"]["m~n"] | data["a/b"]["m~n"] | .["a/b"]["m~n"] | /a~1b/m~0n |
$ | data | data | . | 빈 글자 |
표기마다 점(.)으로 쓸 수 있는 키의 범위가 다릅니다. JSONPath 표준(RFC 9535)은 영문·밑줄에 더해 U+0080 이상의 글자를 점 표기에 허용하므로 한글 키도 $.주소.도시로 씁니다. jq는 영문·숫자·밑줄로 된 키만 점으로 쓸 수 있어서 한글이나 하이픈이 든 키는 .["주소"]처럼 대괄호로 감쌉니다. JavaScript는 식별자 규칙을 따르므로 한글 키는 점으로, x-request-id처럼 하이픈이 든 키는 대괄호로 씁니다. JSON Pointer는 키를 /로 잇기 때문에 키 안의 ~는 ~0, /는 ~1로 바꾸며, 문서 전체를 가리킬 때는 빈 글자입니다.
문법은 맞아도 값이 달라지는 경우
큰 숫자. JSON 문법은 숫자 자릿수에 한계를 두지 않지만, RFC 8259는 대부분의 프로그램이 IEEE 754 binary64(배정밀도 실수)로 숫자를 다룬다며 정수는 −(2⁵³−1)부터 2⁵³−1까지만 어디서나 같게 읽힌다고 적습니다. 그보다 큰 정수나 유효 숫자가 너무 긴 소수는 가장 가까운 binary64 값으로 바뀝니다. 이 검사기는 쓴 글자와 읽힌 값의 유효 숫자를 비교해 달라지는 숫자만 주의로 표시합니다.
| JSON에 쓴 숫자 | JavaScript가 읽는 값 | 이 검사기 |
|---|---|---|
9007199254740991 | 9007199254740991 | 그대로(안전한 최대 정수) |
9007199254740993 | 9007199254740992 | 정밀도 손실 |
1234567890123456789 | 1234567890123456800 | 정밀도 손실 |
0.1234567890123456789 | 0.12345678901234568 | 정밀도 손실 |
1.10 | 1.1 | 그대로(같은 값, 글자는 정리할 때도 보존) |
1e400 | Infinity | 범위를 넘는 숫자(Python은 inf) |
1e-400 | 0 | 0이 되는 숫자 |
주문 번호·회원 번호처럼 계산하지 않는 큰 정수는 "1234567890123456789"처럼 문자열로 주고받는 것이 안전합니다. RFC 7493(I-JSON)도 binary64보다 큰 범위나 정밀도가 필요한 숫자는 문자열로 담으라고 권합니다.
중복 키. RFC 8259는 한 객체의 키가 고유해야 한다(SHOULD)고 정하면서, 겹치면 마지막 값만 쓰는 프로그램, 오류를 내는 프로그램, 모두 넘기는 프로그램이 있어 동작을 예측할 수 없다고 적습니다. JavaScript JSON.parse와 Python json은 뒤의 값을 씁니다. 이 검사기는 중복 키를 오류로 막지 않고 주의로 표시하며, 트리에서 그 키를 고르면 앞에 나온 같은 키로 가는 단추를 보여 줍니다.
짝 없는 서로게이트. 이모지처럼 U+FFFF를 넘는 글자는 \ud83d\ude00처럼 이스케이프 두 개가 한 쌍입니다. 중간에 잘려 \ud83d만 남으면 문법은 통과하지만 UTF-8로 옮길 수 없는 글자가 되어 받는 쪽에서 깨지거나 오류가 납니다. I-JSON은 이런 글자를 허용하지 않습니다.
BOM. 메모장 같은 편집기는 파일 맨 앞에 BOM(U+FEFF)을 붙이기도 합니다. RFC 8259는 JSON을 보낼 때 BOM을 붙이지 말라(MUST NOT)고 하고, 읽는 쪽은 무시해도 된다(MAY)고 합니다. 그런데 JavaScript JSON.parse와 Python json.loads(문자열 입력)는 BOM을 오류로 봅니다. 이 검사기는 BOM을 건너뛰고 읽되 주의로 표시하고, 정리·압축한 결과에서는 뺍니다.
키 순서. JSON 객체의 키 순서는 뜻이 없다고 보는 것이 원칙이지만, 사람이 읽을 때는 쓴 순서가 중요합니다. JavaScript 객체는 "2024"처럼 정수 모양인 키를 다른 키보다 앞에 둡니다(ECMAScript OrdinaryOwnPropertyKeys). 그래서 이 검사기는 브라우저의 JSON.parse를 쓰지 않고 자체 해석기로 쓴 순서대로 트리를 그립니다.
무게 지도 읽는 법
무게 지도는 고른 객체나 배열 바로 아래 값마다 원문에서 차지하는 UTF-8 바이트를 재어 그만큼의 넓이로 나눈 그림입니다. 객체라면 키 이름과 값, 그 사이 공백까지 셉니다. 넓은 칸부터 정사각형에 가깝게 배치하며, 최대 30칸을 그리고 전체의 0.4%가 안 되는 작은 값들은 빗금 친 '그 밖' 한 칸으로 묶습니다. 칸 색은 트리 글자색과 같은 종류 색(객체·배열·문자열·숫자·참거짓·null)입니다.
칸을 누르면 그 값이 선택되고, 객체나 배열이면 트리에서 펼쳐지면서 지도도 한 단계 안쪽으로 들어갑니다. 위쪽의 위치 표시(전체 › items › 0)를 누르면 바깥으로 나옵니다. 예시 '주문 API 응답'에서는 상품 세 개가 든 items가 가장 넓고, 그 안으로 들어가면 옵션이 많은 상품이 더 넓게 보입니다. 실제 응답에서는 base64로 넣은 그림, 매번 반복되는 긴 설명, 쓰지 않는 디버그 필드가 넓은 칸으로 드러나곤 합니다.
자주 틀리는 경우
- JavaScript 객체를 JSON으로 착각: 코드에 쓴
{name: 'a', list: [1, 2,],}는 JavaScript에서는 맞지만 JSON은 아닙니다. 키와 문자열을 큰따옴표로 감싸고 끝 쉼표를 지워야 합니다. 자동 고침이 이 세 가지를 한 번에 처리합니다. - 파이썬 출력을 그대로 복사:
print(dict)의 결과는{'ok': True, 'x': None}처럼 작은따옴표와 True·None을 씁니다. JSON이 필요하면json.dumps()로 출력하세요. 이미 복사했다면 자동 고침으로 바꿀 수 있습니다. - 윈도 경로의 역슬래시:
"C:\Users"의\U는 JSON 이스케이프가 아니라서 오류입니다."C:\\Users"로 두 번 적거나"C:/Users"처럼 슬래시를 쓰세요.\n이나\t로 시작하는 폴더 이름은 오류 없이 줄바꿈·탭으로 바뀌므로 더 조심해야 합니다. - 숫자와 숫자 모양 글자:
42와"42",false와"false"는 다른 값입니다. 트리에서 숫자는 보라색, 문자열은 따옴표가 붙은 갈색으로 보이므로 자료형이 의도와 같은지 확인할 수 있습니다. - JSONL을 한 문서로 검사: 로그 파일처럼 한 줄에 객체 하나씩 쓴 글은 첫 객체 뒤에서 'JSON 값이 끝난 뒤에 글자가 더 있습니다' 오류가 납니다. 한 줄씩 검사하거나 배열로 바꾸세요.
- 문법 통과를 데이터 검증으로 착각:
{"age": -5}나{"date": "2026-02-30"}은 올바른 JSON입니다. 필수 키·값 범위·날짜 존재 여부는 JSON Schema나 받는 시스템의 검증으로 확인해야 합니다.
한계와 주의
- 입력은 5 MB(5,242,880바이트)까지 검사합니다. 파일은 UTF-8(BOM 포함)과 UTF-16 BOM 파일을 읽습니다. 중첩은 500단계까지 읽습니다.
- 트리는 한 번에 3,000줄까지 그리고, 항목이 많은 배열은 200개씩 '더 보기'로 펼칩니다. 찾기는 처음 10,000건까지 셉니다.
- 칸 번호는 코드 포인트로 셉니다. 이모지처럼 UTF-16에서 두 단위를 쓰는 글자도 한 칸이라서, 위치를 UTF-16 단위로 세는 브라우저 오류 메시지의 'position'과는 다를 수 있습니다.
- 자동 고침은 표기만 바꿉니다. NaN·Infinity를 null로 바꾸는 것처럼 뜻이 달라지는 고침이 있으니 목록을 확인한 뒤 쓰세요. 앞자리 0 숫자, 겹친 쉼표, 잘린 문서는 고치지 않습니다.
- JSON Schema 검증, 두 JSON 비교, 키 정렬은 하지 않습니다. 들여쓰기 정리와 압축을 더 자세히 다루려면 JSON 정리·압축기를 쓰세요.
출처
- 01IETF — RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format§2 문법, §4 이름은 고유해야 함(SHOULD), §6 binary64와 ±(2⁵³−1) 상호 운용, §8.1 BOM을 붙이지 말 것·읽을 때 무시해도 됨, §8.2 짝 없는 서로게이트 — 2026-10-22 확인
- 02Ecma International — ECMA-404: The JSON data interchange syntaxJSON 문법 표준(공백은 탭·줄바꿈·복귀·스페이스 네 가지)
- 03IETF — RFC 7493: The I-JSON Message Format§2.1 서로게이트·비문자 금지, §2.2 binary64를 넘는 숫자는 문자열 권장, §2.3 중복 이름 금지(MUST NOT)
- 04IETF — RFC 9535: JSONPath: Query Expressions for JSON§2.5.1.1 member-name-shorthand(영문·밑줄·U+0080 이상 글자), 작은따옴표·큰따옴표 이름 선택자
- 05IETF — RFC 6901: JavaScript Object Notation (JSON) Pointer/로 잇는 경로, ~는 ~0·/는 ~1, 빈 글자는 문서 전체
- 06jq Manual.foo는 영문·숫자·밑줄로 된 키만, 그 밖의 키는 ."foo" 또는 .["foo"]
- 07Python 문서 — json: JSON encoder and decoder'Repeated Names Within an Object': 같은 이름은 마지막 값만 남김, NaN·Infinity를 기본으로 받음
- 08The JSON5 Data Interchange Format§1.1 JSON에 없는 확장: 주석, 끝 쉼표, 작은따옴표, 식별자 키, 16진수, 앞뒤 소수점, + 기호, NaN·Infinity
- 09MDN — JSON.parse()끝 쉼표와 작은따옴표는 SyntaxError
- 10MDN — Number.MAX_SAFE_INTEGERJavaScript가 정확히 나타내는 가장 큰 정수 2⁵³−1 = 9,007,199,254,740,991
- 11ECMAScript Language Specification — OrdinaryOwnPropertyKeys§10.1.11.1 배열 인덱스 모양 키를 숫자 순으로 먼저 나열
자주 묻는 질문
오류가 난 줄·칸이 실제로 틀린 곳과 다른 이유는 무엇인가요?
표시하는 위치는 해석기가 더 읽지 못하고 멈춘 곳입니다. 쉼표가 빠진 경우에는 쉼표가 들어가야 할 자리, 곧 앞 값 바로 뒤를 짚지만, 닫는 따옴표가 빠지면 문자열이 다음 줄까지 이어져 그 뒤에서 멈춥니다. 오류 진단에 나오는 앞뒤 줄과 '연 괄호·문자열이 시작한 자리'를 함께 보면 원인을 찾기 쉽습니다.
자동 고침은 어떤 표기를 고치나요?
주석, 끝 쉼표, 줄 사이 빠진 쉼표, 작은따옴표와 둥근 따옴표 문자열, 따옴표 없는 키, True·False·None과 대문자 TRUE·NULL, NaN·Infinity·undefined(→ null), +1·.5·5.·0x1F 같은 숫자, 문자열 안 줄바꿈·탭, 특수 공백, 맨 앞 BOM의 12종입니다. 줄 배치는 그대로 두고 그 글자만 바꾸며, 고친 결과가 다시 엄격 검사를 통과할 때만 버튼이 나옵니다.
주석이 있는 JSONC·JSON5 파일도 검사할 수 있나요?
이 검사기는 표준 JSON(RFC 8259) 기준으로 검사하므로 주석과 끝 쉼표는 오류로 표시합니다. 대신 자동 고침으로 주석·끝 쉼표·작은따옴표·따옴표 없는 키를 걷어 낸 표준 JSON을 만들 수 있습니다. 원래 파일을 JSONC로 계속 쓸 것이라면 고친 결과는 다른 프로그램에 넘길 사본으로 쓰세요.
큰 숫자가 9007199254740992처럼 바뀌는 이유는 무엇인가요?
JavaScript를 비롯한 많은 프로그램은 JSON 숫자를 IEEE 754 binary64 실수로 읽습니다. 이 형식이 정확히 담는 정수는 ±(2⁵³−1), 곧 9,007,199,254,740,991까지라서 그보다 큰 정수나 유효 숫자가 17자리를 넘는 소수는 가장 가까운 값으로 바뀝니다. 이 검사기는 값이 바뀌는 숫자를 주의 목록에 'JavaScript가 읽는 값'과 함께 보여 줍니다. 식별 번호라면 문자열로 보내는 편이 안전합니다.
같은 객체에 같은 키가 두 번 있으면 어떻게 되나요?
RFC 8259는 키가 고유해야 한다(SHOULD)고만 정하고 겹칠 때의 동작은 프로그램마다 다르다고 적습니다. JavaScript JSON.parse와 Python json은 뒤의 값을 쓰고 앞의 값은 버립니다. 이 검사기는 문법 오류로 막지 않고 주의로 표시하며, 트리와 정리 결과에는 두 값을 모두 남깁니다.
JSONPath와 jq 경로는 어떻게 다른가요?
JSONPath(RFC 9535)는 $로 시작해 $.items[0].name처럼 쓰고, 한글처럼 ASCII가 아닌 글자도 점 표기로 쓸 수 있습니다. jq는 .으로 시작해 .items[0].name처럼 쓰지만 점 표기는 영문·숫자·밑줄로 된 키만 되므로 한글이나 하이픈이 든 키는 .["키"]로 씁니다. JSON Pointer(RFC 6901)는 /items/0/name처럼 /로 잇고 ~는 ~0, /는 ~1로 바꿉니다.
무게 지도의 크기는 무엇을 기준으로 하나요?
고른 객체나 배열 바로 아래 값마다 원문에서 차지하는 UTF-8 바이트(키 이름과 값 안의 공백 포함)를 재어 넓이로 나눕니다. 큰 칸부터 최대 30개를 그리고 아주 작은 나머지는 '그 밖' 한 칸으로 묶습니다. API 응답이 왜 무거운지, 어느 배열이 크기를 차지하는지 찾을 때 쓰세요.
입력한 JSON이 서버로 전송되거나 저장되나요?
아닙니다. 붙여 넣은 글과 연 파일은 이 브라우저 안에서만 검사·변환하며 서버로 보내거나 저장하지 않습니다. 주소에도 내용을 담지 않으므로, 토큰이나 개인정보가 든 응답을 검사한 뒤에는 탭을 닫거나 지우기를 누르면 됩니다.