JSON 파서
JSON(JavaScript Object Notation)은 웹 API와 구성 파일을 위한 표준 데이터 교환 형식입니다. 이 도구는 중첩 구조를 탐색하기 위한 대화형 트리 뷰로 JSON을 파싱, 검증 및 예쁘게 출력합니다. JSON과 YAML 또는 TOML 같은 다른 형식 간 변환합니다.
사양
주요 사용 사례
- 디버깅을 위해 최소화된 API 응답 서식 지정
- 배포 전 JSON 구성 파일 검증
- 문서화를 위해 API 응답을 YAML로 변환
- NoSQL 데이터베이스의 깊이 중첩된 데이터 구조 탐색
- Postman 또는 curl 같은 API 테스트 도구용 JSON 페이로드 준비
기능
- 명확한 오류 메시지와 줄 번호로 JSON 구문 검증
- 2칸 들여쓰기로 예쁘게 출력
- 컴팩트한 저장 또는 전송을 위해 JSON 최소화
- YAML, TOML 또는 XML 형식으로 변환
- 접을 수 있는 노드가 있는 대화형 트리 뷰
- 개별 값 또는 하위 트리 복사
예제
API Response
사용해 보기 →A typical REST API response with nested objects and arrays.
{
"users": [
{
"id": 1,
"name": "Alice",
"email": "alice@example.com"
},
{
"id": 2,
"name": "Bob",
"email": "bob@example.com"
}
],
"total": 2
}Application Configuration
사용해 보기 →Nested configuration with database and cache settings.
{
"database": {
"host": "localhost",
"port": 5432,
"name": "myapp"
},
"cache": {
"enabled": true,
"ttl": 3600
}
}팁
- JSON 키는 큰따옴표로 묶인 문자열이어야 합니다. 작은따옴표는 유효하지 않습니다.
- 마지막 요소 뒤의 후행 쉼표는 표준 JSON에서 허용되지 않습니다.
- 주석이 있는 JSON의 경우 JSONC 파서를 대신 사용하세요.
이해하기 JSON 파서
JSON(JavaScript Object Notation)은 최신 웹의 범용 데이터 교환 형식입니다. RFC 8259와 ECMA-404에 의해 정의된 JSON은 문자열, 숫자, 불리언, null, 배열, 객체의 여섯 가지 타입을 사용하여 구조화된 데이터를 표현합니다. 단순함과 사실상 모든 프로그래밍 언어의 데이터 구조에 직접 매핑되는 특성 덕분에 REST API, 구성 파일, 문서 데이터베이스, 서비스 간 통신의 기본 형식이 되었습니다.
JSON의 구문은 JavaScript 객체 리터럴 표기법의 엄격한 부분집합이지만, 중요한 제한이 있습니다: 키는 큰따옴표로 묶인 문자열이어야 하고, 후행 쉼표는 허용되지 않으며, 주석은 지원되지 않습니다. 이러한 제약은 구현 간 모호하지 않은 파싱을 보장합니다. 유효한 JSON 문서는 루트 요소로 객체 또는 배열을 가져야 합니다(RFC 8259는 기술적으로 최상위 수준에서 모든 JSON 값을 허용하지만, 대부분의 API는 객체 또는 배열을 기대합니다).
웹 개발에서 JSON은 REST 및 GraphQL API의 표준 요청 및 응답 형식입니다. 브라우저는 네이티브 JSON.parse()와 JSON.stringify() 메서드를 제공하며, fetch API에는 .json() 편의 메서드가 포함됩니다. Node.js, Python(Flask, Django), Go 및 기타 언어의 서버 프레임워크는 모두 내장 JSON 직렬화를 포함합니다. MongoDB, CouchDB, DynamoDB 같은 문서 데이터베이스는 JSON 또는 JSON 유사 형식(MongoDB의 BSON)으로 데이터를 기본적으로 저장합니다.
JSON의 제한 사항은 여러 확장과 대안을 낳았습니다: JSONC는 구성 파일에 주석을 추가하고, JSON5는 구문 규칙을 완화하며, JSON Lines(JSONL/NDJSON)는 스트리밍을 위해 줄당 하나의 JSON 객체를 사용하고, JSON Schema는 JSON 문서 구조를 검증하는 어휘를 제공합니다. 바이너리 효율성을 위해 BSON, MessagePack, CBOR 같은 형식은 컴팩트한 JSON 호환 직렬화를 제공합니다. 이러한 대안에도 불구하고, 일반 JSON은 범용 도구 지원과 사람의 가독성으로 인해 지배적인 형식으로 남아 있습니다.
JSON은 의도적으로 주석을 지원하지 않습니다. 이 형식을 대중화한 Douglas Crockford는 단순성을 유지하고 파싱 지시문의 오용(XML에서 발생한 것처럼)을 방지하기 위해 주석을 제외했습니다. 인라인 문서가 필요한 구성 파일의 경우, JSONC(JSON with Comments)가 VS Code, TypeScript, ESLint 같은 도구에서 기본적으로 지원됩니다. YAML과 TOML도 구성 파일이 주석, 여러 줄 문자열, 명확한 섹션 헤더의 이점을 받을 때 강력한 대안입니다.
JavaScript에서 기원했음에도, JSON은 JavaScript 객체 리터럴과 동일하지 않습니다. JSON은 엄격한 구문 규칙을 적용합니다: 모든 키는 큰따옴표로 묶여야 하고, 큰따옴표 문자열만 허용되며, 후행 쉼표는 금지되고, undefined와 함수 같은 값은 표현할 수 없습니다. JSON.parse()는 JSON 문자열을 JavaScript 객체로 변환하고, JSON.stringify()는 객체를 JSON 문자열로 직렬화합니다. 모든 JavaScript 객체가 JSON을 통해 왕복할 수 있는 것은 아닙니다. 함수, undefined, Infinity, 순환 참조를 포함하는 객체는 직렬화 중에 데이터를 잃거나 오류를 발생시킵니다.
수 메가바이트보다 큰 JSON 파일의 경우 전체 문서를 한 번에 메모리에 로드하면 성능 문제가 발생할 수 있습니다. 스트리밍 파서(JavaScript의 clarinet과 oboe.js, Python의 ijson 같은 SAX 스타일 라이브러리)는 전체 구조를 버퍼링하지 않고 점진적으로 문서를 처리합니다. 각 줄이 별도의 JSON 객체인 JSON Lines(JSONL) 형식은 레코드를 한 번에 하나씩 처리할 수 있어 대용량 데이터셋에 이상적입니다. 대용량 응답을 반환하는 API는 개별 응답 크기를 관리 가능하게 유지하기 위해 페이지네이션을 구현해야 합니다. JSON과 다른 형식 사이를 선택할 때, JSON은 모든 언어와 도구가 추가 종속성 없이 지원하므로 API 통신과 데이터 교환의 가장 안전한 기본값입니다. YAML은 Kubernetes 매니페스트와 CI/CD 파이프라인 같이 사람이 편집하는 구성에 탁월합니다. TOML은 Cargo.toml과 pyproject.toml 같이 명시적 섹션 헤더와 단순한 키-값 쌍의 이점을 받는 애플리케이션 구성에 가장 적합합니다.