JSON ํฌ๋งทํ„ฐ

๋กœ๋”ฉ ์ค‘...

JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ํฌ๋งทํŒ…ํ•˜๊ณ  ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค

JSON์ด๋ž€?

JSON(JavaScript Object Notation)์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋Ÿ‰ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ˜•์‹์ž…๋‹ˆ๋‹ค. 2001๋…„ ๋”๊ธ€๋ผ์Šค ํฌ๋ฝํฌ๋“œ(Douglas Crockford)๊ฐ€ ํ‘œ์ค€ํ™”ํ–ˆ์œผ๋ฉฐ, ํ˜„์žฌ ์›น ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹์ž…๋‹ˆ๋‹ค.

JSON์€ ์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์“ฐ๊ธฐ ์‰ฝ๊ณ , ๊ธฐ๊ณ„๊ฐ€ ํŒŒ์‹ฑํ•˜๊ณ  ์ƒ์„ฑํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. JavaScript์—์„œ ์œ ๋ž˜ํ–ˆ์ง€๋งŒ, ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. REST API, ์„ค์ • ํŒŒ์ผ, NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(MongoDB ๋“ฑ) ๋“ฑ ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์—๋ธŒ๋ฆฌ์บ˜ํฌ์˜ JSON ํฌ๋งทํ„ฐ๋Š” JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ฆฌํ•˜๊ณ , ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„์ฃผ๋ฉฐ, ํŠธ๋ฆฌ ๋ทฐ๋กœ ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฒ˜๋ฆฌ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด๋ฃจ์–ด์ ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์™ธ๋ถ€๋กœ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

JSON์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

JSON์€ ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด (Object): ์ค‘๊ด„ํ˜ธ {}๋กœ ๊ฐ์‹ธ๊ณ , "ํ‚ค": ๊ฐ’ ํ˜•ํƒœ์˜ ์Œ์„ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. {"name": "ํ™๊ธธ๋™", "age": 30}

๋ฐฐ์—ด (Array): ๋Œ€๊ด„ํ˜ธ []๋กœ ๊ฐ์‹ธ๊ณ , ๊ฐ’์„ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์˜ค๋ Œ์ง€"]

์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ 6๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • ๋ฌธ์ž์—ด (String): ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ ํ…์ŠคํŠธ โ€” "์•ˆ๋…•ํ•˜์„ธ์š”"
  • ์ˆซ์ž (Number): ์ •์ˆ˜ ๋˜๋Š” ์†Œ์ˆ˜ โ€” 42, 3.14
  • ๋ถˆ๋ฆฌ์–ธ (Boolean): ์ฐธ/๊ฑฐ์ง“ โ€” true, false
  • null: ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ„ โ€” null
  • ๊ฐ์ฒด (Object): ์ค‘์ฒฉ๋œ ํ‚ค-๊ฐ’ ์Œ โ€” {"city": "์„œ์šธ"}
  • ๋ฐฐ์—ด (Array): ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๊ฐ’์˜ ๋ชฉ๋ก โ€” [1, 2, 3]
JSON ๋ฌธ๋ฒ• ๊ทœ์น™

JSON์„ ์ž‘์„ฑํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•˜๋Š” ๊ทœ์น™๋“ค์ž…๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์„ ์–ด๊ธฐ๋ฉด ํŒŒ์‹ฑ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ๊ทœ์น™

  • ํ‚ค(key)๋Š” ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ("")๋กœ ๊ฐ์‹ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค โ€” ์ž‘์€๋”ฐ์˜ดํ‘œ ๋ถˆ๊ฐ€
  • ๋ฌธ์ž์—ด ๊ฐ’๋„ ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ ๋’ค์— ์‰ผํ‘œ(trailing comma)๋ฅผ ๋„ฃ์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค
  • ์ฃผ์„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค โ€” // ๋˜๋Š” /* */ ๋ถˆ๊ฐ€
  • undefined, NaN, Infinity๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

์˜ฌ๋ฐ”๋ฅธ ์˜ˆ์‹œ {"name": "ํ™๊ธธ๋™", "age": 30}

์ž˜๋ชป๋œ ์˜ˆ์‹œ {name: "ํ™๊ธธ๋™", age: 30} โ†’ ํ‚ค์— ๋”ฐ์˜ดํ‘œ ์—†์Œ {'name': 'ํ™๊ธธ๋™'} โ†’ ์ž‘์€๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ {"name": "ํ™๊ธธ๋™", "age": 30,} โ†’ trailing comma {"name": "ํ™๊ธธ๋™" /* ์ด๋ฆ„ */} โ†’ ์ฃผ์„ ์‚ฌ์šฉ

์ฃผ์š” ๊ธฐ๋Šฅ
  • โ—ํฌ๋งท(Beautify): ๋“ค์—ฌ์“ฐ๊ธฐ์™€ ์ค„๋ฐ”๊ฟˆ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ. 2์นธ/4์นธ ์„ ํƒ ๊ฐ€๋Šฅ
  • โ—์ถ•์†Œ(Minify): ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ๊ณผ ์ค„๋ฐ”๊ฟˆ์„ ์ œ๊ฑฐํ•˜์—ฌ ํŒŒ์ผ ํฌ๊ธฐ ์ตœ์†Œํ™”
  • โ—๊ฒ€์ฆ(Validate): ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์—๋Ÿฌ ์œ„์น˜ ํ‘œ์‹œ
  • โ—ํŠธ๋ฆฌ ๋ทฐ: ๋ฐ์ดํ„ฐ๋ฅผ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์‹œ๊ฐํ™”, ๊ฐ ๋…ธ๋“œ๋ฅผ ์ ‘๊ธฐ/ํŽผ์น˜๊ธฐ ๊ฐ€๋Šฅ
  • โ—ํƒ€์ž… ์ƒ‰์ƒ: ๋ฌธ์ž์—ด(์ดˆ๋ก), ์ˆซ์ž(ํŒŒ๋ž‘), ๋ถˆ๋ฆฌ์–ธ(๋ณด๋ผ), null(ํšŒ์ƒ‰)๋กœ ๊ตฌ๋ถ„
  • โ—ํด๋ฆฝ๋ณด๋“œ ๋ณต์‚ฌ: ํฌ๋งท๋œ ๊ฒฐ๊ณผ๋ฅผ ํด๋ฆฝ๋ณด๋“œ์— ๋ฐ”๋กœ ๋ณต์‚ฌ
  • โ—์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ: ๋นˆ ์ž…๋ ฅ ์‹œ ์ƒ˜ํ”Œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ํ…Œ์ŠคํŠธ
JSON vs XML vs YAML

๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ˜•์‹์œผ๋กœ JSON ์™ธ์—๋„ XML๊ณผ YAML์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ˜•์‹์˜ ํŠน์ง•์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

JSON

  • ์žฅ์ : ๊ฒฝ๋Ÿ‰, ํŒŒ์‹ฑ ์†๋„ ๋น ๋ฆ„, ๋Œ€๋ถ€๋ถ„์˜ API์—์„œ ์‚ฌ์šฉ
  • ๋‹จ์ : ์ฃผ์„ ๋ถˆ๊ฐ€, ๋‚ ์งœ/๋ฐ”์ด๋„ˆ๋ฆฌ ํƒ€์ž… ์—†์Œ
  • ์šฉ๋„: REST API, ์„ค์ • ํŒŒ์ผ, NoSQL DB

XML (eXtensible Markup Language)

  • ์žฅ์ : ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ง€์›, ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ, ์ฃผ์„ ๊ฐ€๋Šฅ
  • ๋‹จ์ : ์žฅํ™ฉํ•จ(ํƒœ๊ทธ๊ฐ€ ๋งŽ์•„ ํŒŒ์ผ ํฌ๊ธฐ ํผ), ํŒŒ์‹ฑ์ด ๋ณต์žก
  • ์šฉ๋„: SOAP API, RSS, ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ

YAML (YAML Ain't Markup Language)

  • ์žฅ์ : ๊ฐ€๋…์„ฑ ์ตœ๊ณ , ์ฃผ์„ ์ง€์›, ์•ต์ปค/๋ณ„์นญ์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ
  • ๋‹จ์ : ๋“ค์—ฌ์“ฐ๊ธฐ์— ๋ฏผ๊ฐ, ํŒŒ์‹ฑ ์†๋„ ๋А๋ฆผ
  • ์šฉ๋„: ์„ค์ • ํŒŒ์ผ(Docker, Kubernetes), CI/CD ํŒŒ์ดํ”„๋ผ์ธ

ํ˜„์žฌ ์›น API์˜ 90% ์ด์ƒ์ด JSON์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฐ€์žฅ ๋ฒ”์šฉ์ ์ธ ๋ฐ์ดํ„ฐ ํ˜•์‹์ž…๋‹ˆ๋‹ค.

์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•˜์„ธ์š”
  • โ—API ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ถ„์„ํ•  ๋•Œ
  • โ—Postman, curl ๋“ฑ์—์„œ ๋ฐ›์€ JSON ๊ฒฐ๊ณผ๋ฅผ ์ •๋ฆฌํ•  ๋•Œ
  • โ—JSON ์„ค์ • ํŒŒ์ผ(package.json, tsconfig.json ๋“ฑ)์„ ํŽธ์ง‘ํ•  ๋•Œ
  • โ—JSON ๋ฐ์ดํ„ฐ์˜ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„์•ผ ํ•  ๋•Œ
  • โ—CDN์ด๋‚˜ ๋„คํŠธ์›Œํฌ์—์„œ ์ถ•์†Œ๋œ JSON์„ ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋ณ€ํ™˜ํ•  ๋•Œ
  • โ—๋Œ€๋Ÿ‰์˜ JSON ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํŠธ๋ฆฌ ๋ทฐ๋กœ ํŒŒ์•…ํ•  ๋•Œ
  • โ—ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋ชฉ์—… ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ
  • โ—๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ถ”์ถœํ•œ JSON ๋ฌธ์„œ๋ฅผ ์ •๋ฆฌํ•  ๋•Œ
์‚ฌ์šฉ ๋ฐฉ๋ฒ•
  1. JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์ฐฝ์— ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ์ง์ ‘ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • "์ƒ˜ํ”Œ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.
  2. ๋„๊ตฌ ๋ชจ์Œ์—์„œ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ํฌ๋งท: ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋“ค์—ฌ์“ฐ๊ธฐ ์ •๋ฆฌ
    • ์ถ•์†Œ: ๊ณต๋ฐฑ ์ œ๊ฑฐ๋กœ ์ตœ์†Œ ํฌ๊ธฐ๋กœ ๋ณ€ํ™˜
    • ๋ณต์‚ฌ: ๊ฒฐ๊ณผ๋ฅผ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ
    • ์ง€์šฐ๊ธฐ: ์ž…๋ ฅ ๋‚ด์šฉ ์ „์ฒด ์‚ญ์ œ
  3. ๋“ค์—ฌ์“ฐ๊ธฐ ๋‹จ์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค (2์นธ ๋˜๋Š” 4์นธ).

  4. ๋ทฐ ๋ชจ๋“œ๋ฅผ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    • ํฌ๋งท ๋ทฐ: ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ
    • ํŠธ๋ฆฌ ๋ทฐ: ์ ‘๊ธฐ/ํŽผ์น˜๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ํ‘œ์‹œ
  5. ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ž…๋ ฅ์ฐฝ ์•„๋ž˜์— ๋นจ๊ฐ„์ƒ‰ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ
Q. JSON ๋ฌธ๋ฒ• ์˜ค๋ฅ˜์˜ ํ”ํ•œ ์›์ธ์€?
A. ๊ฐ€์žฅ ํ”ํ•œ ์˜ค๋ฅ˜ 5๊ฐ€์ง€: (1) ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ ๋’ค์˜ ์‰ผํ‘œ(trailing comma), (2) ์ž‘์€๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ(ํฐ๋”ฐ์˜ดํ‘œ๋งŒ ํ—ˆ์šฉ), (3) ํ‚ค๋ฅผ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์ง€ ์•Š์€ ๊ฒฝ์šฐ, (4) ์ฃผ์„ ์‚ฌ์šฉ(JSON์€ ์ฃผ์„ ๋ฏธ์ง€์›), (5) undefined ์‚ฌ์šฉ. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์˜ position ์ˆซ์ž๋ฅผ ํ™•์ธํ•˜๋ฉด ์˜ค๋ฅ˜ ์œ„์น˜๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Q. ํŠธ๋ฆฌ ๋ทฐ์˜ ์ ‘๊ธฐ/ํŽผ์น˜๊ธฐ๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?
A. ํŠธ๋ฆฌ ๋ทฐ์—์„œ ํ™”์‚ดํ‘œ(โ–ถ/โ–ผ)๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ์ ‘๊ฑฐ๋‚˜ ํŽผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ 2๋‹จ๊ณ„ ๊นŠ์ด๊นŒ์ง€ ํŽผ์ณ์ง€๋ฉฐ, ์ ‘ํžŒ ์ƒํƒœ์—์„œ๋Š” ํ•˜์œ„ ํ•ญ๋ชฉ ์ˆ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ JSON์˜ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
Q. ๋“ค์—ฌ์“ฐ๊ธฐ 2์นธ๊ณผ 4์นธ์˜ ์ฐจ์ด๋Š”?
A. ๊ธฐ๋Šฅ์  ์ฐจ์ด๋Š” ์—†์œผ๋ฉฐ ์ˆœ์ „ํžˆ ๊ฐ€๋…์„ฑ ์„ ํ˜ธ๋„์˜ ์ฐจ์ด์ž…๋‹ˆ๋‹ค. 2์นธ์€ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ณ  ์ค‘์ฒฉ์ด ๊นŠ์€ ๋ฐ์ดํ„ฐ์—์„œ ๊ฐ€๋กœ ์Šคํฌ๋กค์ด ์ ์Šต๋‹ˆ๋‹ค. 4์นธ์€ ๊ตฌ์กฐ๊ฐ€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์›น ๊ฐœ๋ฐœ์—์„œ๋Š” 2์นธ, Java/Python ํ”„๋กœ์ ํŠธ์—์„œ๋Š” 4์นธ์„ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Q. ๋Œ€์šฉ๋Ÿ‰ JSON๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
A. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ JSON ๋ฐ์ดํ„ฐ(์ˆ˜ MB ์ด๋‚ด)๋Š” ๋ฌธ์ œ์—†์ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋งค์šฐ ํฐ ํŒŒ์ผ(์ˆ˜์‹ญ MB ์ด์ƒ)์€ ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์— ์˜ํ•ด ๋А๋ ค์ง€๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Q. JSON์— ์ฃผ์„์„ ๋„ฃ์œผ๋ ค๋ฉด?
A. JSON ํ‘œ์ค€์€ ์ฃผ์„์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์—์„œ ์ฃผ์„์ด ํ•„์š”ํ•˜๋‹ค๋ฉด JSON5, JSONC(VS Code ๋ฐฉ์‹), ๋˜๋Š” YAML์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”. TypeScript์˜ tsconfig.json์€ JSONC ํ˜•์‹์œผ๋กœ ์ฃผ์„์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
Q. ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๋‚˜์š”?
A. ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฒ˜๋ฆฌ(ํŒŒ์‹ฑ, ํฌ๋งทํŒ…, ๊ฒ€์ฆ)๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ JavaScript ์—”์ง„์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๊ฑฐ๋‚˜ ์ €์žฅ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ(API ํ‚ค, ํ† ํฐ ๋“ฑ)๋„ ์•ˆ์‹ฌํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ JSON ํ™œ์šฉ ํŒ
  • โ—API ์‘๋‹ต์„ ํ™•์ธํ•  ๋•Œ๋Š” ๋จผ์ € ํฌ๋งทํŒ…ํ•˜์—ฌ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•œ ํ›„ ํ•„์š”ํ•œ ํ•„๋“œ๋ฅผ ์ฐพ์œผ์„ธ์š”
  • โ—JSON.stringify(obj, null, 2)๋กœ JavaScript์—์„œ ์ง์ ‘ ํฌ๋งทํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • โ—JSON.parse()๋Š” try-catch๋กœ ๊ฐ์‹ธ์„œ ํŒŒ์‹ฑ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜์„ธ์š”
  • โ—package.json์˜ ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” 2์นธ์ด ํ‘œ์ค€์ž…๋‹ˆ๋‹ค
  • โ—API ์‘๋‹ต ํฌ๊ธฐ๋ฅผ ์ค„์ด๋ ค๋ฉด ์ถ•์†Œ(minify)๋œ JSON์„ ์ „์†กํ•˜์„ธ์š”
  • โ—VS Code์—์„œ Shift+Alt+F๋กœ JSON ํŒŒ์ผ์„ ์ž๋™ ํฌ๋งทํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • โ—๋‚ ์งœ ๋ฐ์ดํ„ฐ๋Š” ISO 8601 ํ˜•์‹(2025-01-15T09:30:00Z)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ‘œ์ค€์ž…๋‹ˆ๋‹ค
EVERYCALC
๋ฐฐ๋„ˆ ๋กœ๋”ฉ ์ค‘์ž…๋‹ˆ๋‹ค...