Category Reference

JSON

기초 문법, 문자열과 숫자 규칙, API 구조, JSON Schema 검증까지 JSON의 핵심 흐름을 카드형 레퍼런스로 정리합니다.

15 cards

제목, 요약, 태그, 섹션 제목 기준으로 찾습니다.

섹션

기초와 문법

7 cards

JSON기초와 문법

JSON이란 무엇인가

json
{
  "name": "RefDock",
  "public": true,
  "version": 1,
  "tags": ["docs", "json"],
  "meta": null
}

JSON이 어떤 목적의 데이터 형식인지와 값 종류, 이식성, API와 설정 파일에서 널리 쓰이는 이유를 정리합니다.

JSON기초와 문법

values와 literals

json
[
  "text",
  42,
  true,
  null,
  { "x": 1 },
  [1, 2, 3]
]

JSON이 허용하는 여섯 가지 values와 true, false, null literal의 규칙, 최상위 값 제한을 정리합니다.

JSON기초와 문법

object와 member 규칙

json
{
  "id": 101,
  "title": "JSON Basics",
  "published": true
}

object에서 key는 왜 문자열이어야 하는지, member 구분 규칙, 중복 key의 위험과 순서 해석 주의점을 정리합니다.

JSON기초와 문법

array와 순서

json
[
  { "id": 1, "name": "Kim" },
  { "id": 2, "name": "Lee" }
]

array가 ordered sequence라는 점, object와 array를 나누는 기준, 섞인 타입 사용 시 주의점을 정리합니다.

JSON기초와 문법

string, number, escaping

json
{
  "path": "C:\\temp\\data.json",
  "quote": "\"json\"",
  "count": 42,
  "ratio": 3.14,
  "exp": 1e6
}

큰따옴표 string, escape 규칙, 숫자의 선행 0 금지, NaN과 Infinity 불가 같은 JSON 기본 문법 함정을 정리합니다.

JSON기초와 문법

Common syntax errors

text
흔한 오류
- { "a": 1, }          // trailing comma
- { a: 1 }             // 따옴표 없는 key
- { "a": 'x' }         // 작은따옴표 문자열
- { "a": 1 } // note   // 주석

trailing comma, comment, 작은따옴표, 따옴표 없는 key처럼 자주 보이는 JSON 문법 오류와 비표준 확장 문법과의 혼동을 정리합니다.

JSON기초와 문법

UTF-8 and Unicode

json
{
  "lang": "한국어",
  "emoji": "😀",
  "escaped": "\uD83D\uDE00"
}

네트워크로 주고받는 JSON의 UTF-8 규칙, BOM 주의점, Unicode escape와 실제 문자 표현의 차이를 정리합니다.

파싱과 직렬화

2 cards

JSON파싱과 직렬화

JSON과 JavaScript object literal 차이

js
// JavaScript object literal
const obj = {
  user: "Kim",
  active: true,
  note: undefined,
};

// JSON text
const text = '{"user":"Kim","active":true}';

JSON과 JavaScript object literal이 비슷해 보여도 key 인용, 주석, trailing comma, undefined 같은 차이가 있다는 점을 정리합니다.

JSON파싱과 직렬화

JSON.parse and JSON.stringify

js
const text = '{"name":"Kim","score":42}';
const data = JSON.parse(text);

const pretty = JSON.stringify(data, null, 2);

JavaScript에서 JSON.parse와 JSON.stringify로 문자열과 값을 오가는 기본 흐름, replacer, reviver, 직렬화 제한을 정리합니다.

데이터 설계 패턴

3 cards

JSON데이터 설계 패턴

null vs missing

json
{
  "nickname": null
}

key가 아예 없는 경우와 null이 들어 있는 경우가 왜 다른 의미인지, API와 Schema에서 어떤 차이를 만드는지 정리합니다.

JSON데이터 설계 패턴

중첩 구조 설계

json
{
  "user": {
    "id": 1,
    "profile": {
      "name": "Kim",
      "emails": ["a@example.com", "b@example.com"]
    }
  }
}

JSON 데이터를 너무 평평하게도 너무 깊게도 만들지 않기 위한 중첩 구조 설계 기준과 반복 데이터 표현 원칙을 정리합니다.

JSON데이터 설계 패턴

API 응답 구조 설계

json
{
  "data": {
    "id": 101,
    "title": "JSON Guide"
  },
  "meta": {
    "requestId": "req_123",
    "version": 1
  }
}

JSON API 응답에서 data, meta, error 같은 상위 구조를 어떻게 안정적으로 잡으면 좋은지와 확장성을 정리합니다.

JSON Schema와 검증

3 cards

JSONJSON Schema와 검증

Schema 기본

json
{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "number" }
  },
  "required": ["name"]
}

JSON Schema가 JSON 데이터의 모양과 제약을 기술하는 방식, type과 properties의 역할, instance와 schema 차이를 정리합니다.

JSONJSON Schema와 검증

Required and additionalProperties

json
{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "email": { "type": "string" }
  },
  "required": ["name", "email"],
  "additionalProperties": false
}

properties만 선언해도 필수가 되지 않는 이유와 required, additionalProperties로 object를 닫는 방식의 장단점을 정리합니다.

JSONJSON Schema와 검증

array와 enum 제약

json
{
  "type": "object",
  "properties": {
    "status": {
      "enum": ["draft", "review", "published"]
    },
    "tags": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}

JSON Schema에서 array 항목 규칙을 items로 잡는 방법과 enum, const로 허용 값을 제한하는 방식을 정리합니다.