객체는 순서 없는 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 가 아냐.