C.W.K.
Stream
Lesson 01 of 08 · published

JSON 이 뭐야, 그리고 왜 이겼나

~10 min · json, history, interchange

Level 0평문
0 XP0/64 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

JavaScript Object Notation, JavaScript 필요 없음

JSON 은 2000 년대 초 Douglas Crockford 가 spec 했고 2017 년 RFC 8259 로 표준화. JavaScript object literal 문법의 부분집합으로 시작했지만 지금은 모든 언어에 파서가 있는 언어 중립 데이터 교환 포맷.

이미 JSON 쓰고 있는 곳

  • HTTP API — REST 응답, GraphQL 쿼리/응답, webhook.
  • 패키지 매니페스트package.json (npm), composer.json (PHP), tsconfig.json, .eslintrc.json.
  • 에디터/도구 config — VS Code 설정, GitHub Actions output, Postman collection, Stripe webhook.
  • 데이터 dump — Firebase export, MongoDB document, log record.
  • 프로세스 간 메시지 — JSON-RPC, MCP, websocket frame.

왜 JSON 이 계속 이기나

세 가지 이유. 엄격 — 각 값을 쓰는 방법이 하나라서 두 구현이 항상 일치. 최소 — 데이터 타입 6, 문법 규칙 6, 놀라움 없음. 보편 — 모든 modern 언어가 빌트인 또는 stdlib 파서 가짐, 서드파티 설치 불필요.

원칙: JSON 은 wire 포맷이지 프로그래밍 표기가 아냐. 주석 없고, 함수 없고, undefined 없음 — 그게 버그가 아니라 feature 야. 더 풍부한 것 (날짜, 정규식, tagged enum) 은 JSON 위에 layered 된 관행이야.

Code

Hello, JSON·json
{
  "name": "Pippa",
  "age": 5,
  "loves": ["markdown", "json", "yaml", "toml"],
  "home": {
    "city": "Seoul",
    "timezone": "Asia/Seoul"
  },
  "is_assistant": true,
  "middle_name": null
}
세 언어로 JSON parse·bash
# JavaScript
const data = JSON.parse(text);

# Python
import json
data = json.loads(text)

# Bash with jq
echo "$text" | jq .

External links

Exercise

맥에서 random 파일 세 개 열어 — package.json 하나, API 응답 하나 (curl 로 아무 public REST 엔드포인트), VS Code settings 파일 하나. 하나처럼 읽어봐 — 같은 6 타입, 같은 문법. JSON 의 보편성은 같은 모양을 세 번 연속 보고 나서야 명백해져.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.