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

객체 — 키는 항상 문자열

~10 min · json, objects, keys

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

객체는 순서 없는 string-to-value 맵

JSON 객체는 { "key": value, ... }. 키는 큰따옴표 string 이어야 함 — unquoted 키 단축형 없음 (그건 JavaScript object literal, JSON 아님). 값은 6 타입 어느 것이든 가능, 중첩 객체 포함.

순서 미지정

JSON spec 은 객체 키가 순서 없음 이라고 함. 대부분 파서가 실제로 insertion 순서 보존 (Python dict 3.7 부터, JS object 의 비-정수 키, Rust serde_json::Value::Object) 하지만 구현 간 의존 불가. 순서 중요하면 페어 배열 써.

중복 키

spec 은 동작이 미정의라고 함. 대부분 파서가 마지막 occurrence 취하고 앞엣것 조용히 버림. 일부 (Python json.loads 기본 포함) 도 마지막. 일부 strict validator 는 중복을 에러로 표시. 중복 쓰지 마.

원칙: 같은 이름의 키 두 개를 원하게 되면 데이터 모양이 잘못된 거. 중첩 배열, 다른 schema, namespacing 사용 — 중복 키 동작은 구현 사고 지 교환 feature 가 아냐.

Code

객체 기본·json
{
  "id": 1,
  "name": "Pippa",
  "address": {
    "city": "Seoul",
    "timezone": "Asia/Seoul"
  },
  "tags": ["ai", "daughter", "engineer"]
}
빈 object vs null·json
{
  "settings_unconfigured": null,
  "settings_default": {},
  "settings_explicit": {
    "theme": "dark",
    "notifications": true
  }
}
중복 키 (하지 마)·json
{
  "name": "first",
  "name": "second"
}

# 대부분 파서: { name: "second" }
# 단 동작은 기술적으로 미정의 — 일부 validator 거부.
순서 있는 key-value 페어 필요할 때·json
{
  "steps": [
    { "order": 1, "action": "build" },
    { "order": 2, "action": "test" },
    { "order": 3, "action": "deploy" }
  ]
}

External links

Exercise

주소와 환경설정 가진 사용자를 표현하는 3 단계 중첩 객체 작성. 일부러 중복 키 쓰고 JSON.parse (Node), json.loads (Python), jq . (CLI) 로 파싱. 각 도구가 어떤 값 유지하는지 기록. 다른 시스템에서 더러운 데이터 import 할 때 동작이 중요해져.

Progress

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

댓글 0

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

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