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

배열 — 순서 있음, 이종 허용, trailing comma 금지

~10 min · json, arrays, ordering

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

배열은 순서 있고, 대괄호로 감싸고, 콤마로 구분

배열은 [] 사용. 순서가 유의미 (객체 키와 다름). 요소가 6 타입 어느 것이든 가능, 같은 타입 아니어도 됨 — JSON 배열은 spec 상 이종, 대부분 API 가 동종으로 쓰지만.

Trailing-comma 함정

JSON 은 마지막 요소 뒤 trailing comma 허용 안 함. [1, 2, 3,] 는 파스 에러. 가장 흔한 JSON 문법 버그 — Python, JavaScript, Rust, Go 다 native literal 문법에서 trailing comma 허용해서 근육 기억이 계속 무는 거야.

빈 배열 vs null vs 누락 키

다른 세 상태: "items": [] = '리스트 알고 있음, 비어있음'. "items": null = '아직 모름'. items 완전 생략 = '이 개념이 적용 안 됨'. 이걸 혼동하는 API 는 오후 디버깅 만들어.

원칙: 배열은 순서 운반; 객체는 이름 운반. 데이터가 자연스럽게 순서 있으면 (단계, log entry, 검색 결과) 배열 써. 자연스럽게 이름으로 주소 가능하면 (설정, 필드, 속성) 객체 써. 순서 있는 데이터를 객체로 저장해서 키 insertion 순서에 의존하지 마.

Code

배열 — 동종과 이종·json
{
  "strings": ["a", "b", "c"],
  "numbers": [1, 2, 3],
  "objects": [
    { "id": 1, "name": "alpha" },
    { "id": 2, "name": "beta" }
  ],
  "mixed": [1, "two", true, null, [3, 4]]
}
Trailing-comma 함정·json
[
  1,
  2,
  3,
]

# ↑ Parse error. JSON 은 trailing comma 금지.
# Python 과 JS 가 native 문법에선 허용 — 거기서 근육 기억이 와.
# 수정:
[
  1,
  2,
  3
]
Empty / null / missing — 다른 세 가지·json
{
  "known_empty":     [],
  "unknown_yet":     null,
  "explicit_value":  [1, 2, 3]
}

# 네 번째 상태 — 키 자체 부재. '부재' 는
// '이 개념이 이 리소스에 적용 안 됨' 으로 다뤄. API 는
// 필드당 한 관행 골라서 문서화.

External links

Exercise

근처 CSV 파일 하나 (아무 표 데이터든) 골라. 각 행이 컬럼 이름으로 키 매겨진 객체가 되는 객체 배열의 JSON 으로 변환. 모든 컬럼 타입 (string vs number vs boolean) 에 대한 한 해석에 commit 한 거야. CSV 는 schema 없었음; JSON 엔 implicit schema 있어. 어디서 추측해야 했지?

Progress

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

댓글 0

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

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