본문 바로가기
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 가 정리했고 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 이 계속 이기나

이유는 세 가지야. 엄격해서 — 값 하나를 적는 방법이 하나뿐이라 서로 다른 구현이 늘 같은 결론에 닿아. 작아서 — 데이터 타입 여섯에 문법 규칙 여섯이면 끝이고, 놀랄 구석이 없어. 어디에나 있어서 — 요즘 언어면 파서가 언어 자체나 표준 라이브러리에 들어 있어서 따로 깔 게 없어.

원칙: JSON 은 주고받는 포맷이지 프로그래밍 표기가 아니야. 주석도 없고 함수도 없고 undefined 도 없어. 그게 버그가 아니라 설계야. 날짜나 정규식, tagged enum 같은 더 풍부한 것들은 전부 JSON 위에 사람들이 얹어 쓰는 관행이고.

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

아무 파일이나 세 개 열어봐. package.json 하나, API 응답 하나 (아무 공개 REST 엔드포인트에 curl 한 번), VS Code settings 파일 하나. 그리고 셋을 한 덩어리처럼 읽어. 같은 여섯 타입, 같은 문법이야. JSON 이 얼마나 어디에나 있는지는 같은 모양을 세 번 내리 보고 나서야 실감이 나.

Progress

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

댓글 0

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

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