๐Ÿ“‹

JSON ํฌ๋งคํ„ฐ & ๊ฒ€์ฆ๊ธฐ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Q: JSON ํฌ๋งทํ„ฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A: JSON ํฌ๋งทํ„ฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

JSON ํฌ๋งทํ„ฐ๋Š” ์›์‹œ, ์ถ•์†Œ ๋˜๋Š” ์ž˜๋ชป๋œ ํ˜•์‹์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ ์ ˆํ•œ ๋“ค์—ฌ์“ฐ๊ธฐ, ์ค„ ๋ฐ”๊ฟˆ ๋ฐ ๊ฐ„๊ฒฉ์„ ์ ์šฉํ•˜์—ฌ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์‹œ ํฌ๋งทํŒ…ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ JSON ํฌ๋งทํ„ฐ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๊ตฌ๋ฌธ ๊ฐ•์กฐ, ์˜ค๋ฅ˜ ๊ฐ์ง€, ๊ทธ๋ฆฌ๊ณ  ๋•Œ๋กœ๋Š” ํ‚ค ์ •๋ ฌ, ์ถ•์†Œ, ํŠธ๋ฆฌ ๋ทฐ ํƒ์ƒ‰๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ €ํฌ ๋ฌด๋ฃŒ ์˜จ๋ผ์ธ JSON ํฌ๋งทํ„ฐ๋Š” ํฌ๋งทํŒ…๊ณผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋‚˜์˜ ๋„๊ตฌ๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ, ์ƒ์„ธํ•œ ์˜ค๋ฅ˜ ๋ณด๊ณ ์™€ ํ•จ๊ป˜ ์ฆ‰๊ฐ์ ์ด๊ณ  ๊น”๋”ํ•œ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Q: ์™œ ์ œ JSON์ด ์œ ํšจํ•˜์ง€ ์•Š์€๊ฐ€์š”?

A: ์™œ ์ œ JSON์ด ์œ ํšจํ•˜์ง€ ์•Š์€๊ฐ€์š”?

JSON์€ JSON ์‚ฌ์–‘์˜ ์—„๊ฒฉํ•œ ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•  ๋•Œ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์›์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ ๋’ค์— ํ›„ํ–‰ ์‰ผํ‘œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
  • ๊ฐ์ฒด ํ‚ค๋‚˜ ๋ฌธ์ž์—ด ๊ฐ’ ์ฃผ์œ„์— ํฐ๋”ฐ์˜ดํ‘œ๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ
  • ํฐ๋”ฐ์˜ดํ‘œ ๋Œ€์‹  ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ (์ž‘์€๋”ฐ์˜ดํ‘œ๋Š” JSON์—์„œ ์œ ํšจํ•˜์ง€ ์•Š์Œ)
  • ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ํŠน์ˆ˜ ๋ฌธ์ž, ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋ฐฑ์Šฌ๋ž˜์‹œ๋‚˜ ๋ฌธ์ž์—ด ๋‚ด ๋”ฐ์˜ดํ‘œ
  • undefined, NaN, Infinity์™€ ๊ฐ™์€ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’ (JSON์— ํ•ด๋‹นํ•˜๋Š” ํ‘œํ˜„์ด ์—†์Œ)
  • ์ค‘๊ด„ํ˜ธ๋‚˜ ๋Œ€๊ด„ํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ {/} ๋˜๋Š” [/]๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์Œ์„ ์ด๋ฃจ์ง€ ์•Š์Œ

JSON ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜์˜ ์ •ํ™•ํ•œ ์œ„์น˜์™€ ๋‚ด์šฉ์„ ํŒŒ์•…ํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ค„ ๋ฒˆํ˜ธ, ์—ด ๋ฒˆํ˜ธ ๋ฐ ์„ค๋ช…์ ์ธ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

Q: JSON๊ณผ JavaScript ๊ฐ์ฒด์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A: JSON๊ณผ JavaScript ๊ฐ์ฒด์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

JSON ๊ตฌ๋ฌธ์€ JavaScript ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๊ตฌ๋ฌธ์—์„œ ํŒŒ์ƒ๋˜์—ˆ์ง€๋งŒ, ๋‘˜์€ ์„œ๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฃผ์š” ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค -- JSON์€ {"key": "value"}๋ฅผ ์š”๊ตฌํ•˜์ง€๋งŒ, JavaScript๋Š” {key: "value"}(๋”ฐ์˜ดํ‘œ ์—†์Œ)์™€ {'key': 'value'}(์ž‘์€๋”ฐ์˜ดํ‘œ)๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฌธ์ž์—ด ๊ฐ’์€ ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค -- JSON์€ ๋ฌธ์ž์—ด์— ํฐ๋”ฐ์˜ดํ‘œ๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. JavaScript๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ์™€ ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ๋ชจ๋‘ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. ํ›„ํ–‰ ์‰ผํ‘œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค -- JSON์€ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ ๋’ค์˜ ํ›„ํ–‰ ์‰ผํ‘œ๋ฅผ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. JavaScript๋Š” ์ด๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  4. ์ œํ•œ๋œ ๋ฐ์ดํ„ฐ ์œ ํ˜• -- JSON์€ ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ, null, ๊ฐ์ฒด, ๋ฐฐ์—ด๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. JavaScript ๊ฐ์ฒด๋Š” ํ•จ์ˆ˜, undefined, Date, Map, Set ๋ฐ ๊ธฐํƒ€ ํŠน์ˆ˜ ์œ ํ˜•์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์ฃผ์„์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค -- JSON์€ ์ฃผ์„์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์˜ JavaScript ๊ฐ์ฒด์—๋Š” ์ฃผ์„์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, JavaScript ๊ฐ์ฒด๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ JSON์ด๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค -- JSON.stringify()๋กœ ์ง๋ ฌํ™”ํ•˜๊ฑฐ๋‚˜ ์—„๊ฒฉํ•œ JSON ๊ทœ์น™์— ๋”ฐ๋ผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Q: JSON์— ์ฃผ์„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

A: JSON์— ์ฃผ์„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์•„๋‹ˆ์š”, ๊ณต์‹ JSON ์‚ฌ์–‘(RFC 8259)์€ ์ฃผ์„์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. JSON์€ ์ตœ์†Œํ•œ์˜ ์–ธ์–ด ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ˜•์‹์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ํŒŒ์„œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ณ  ์—ฌ๋Ÿฌ ์–ธ์–ด์—์„œ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์„์ด ์˜๋„์ ์œผ๋กœ ์ œ์™ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • JSONC (JSON with Comments) -- VS Code ๋ฐ ๊ธฐํƒ€ ๋„๊ตฌ์—์„œ ๊ตฌ์„ฑ ํŒŒ์ผ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. JSONC๋Š” // ์ค„ ์ฃผ์„๊ณผ /* */ ๋ธ”๋ก ์ฃผ์„์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • YAML ๋˜๋Š” TOML -- ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฃผ์„์„ ์ง€์›ํ•˜๋Š” ๋Œ€์ฒด ๊ตฌ์„ฑ ํ˜•์‹์ž…๋‹ˆ๋‹ค.
  • ๊ทœ์น™ ๊ธฐ๋ฐ˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ -- JSON ๊ฐ์ฒด์— "_comment" ๋˜๋Š” "//"์™€ ๊ฐ™์€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŽ˜์ด๋กœ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”.
  • ํŒŒ์‹ฑ ์ „์— ์ฃผ์„ ์ œ๊ฑฐ -- ์—„๊ฒฉํ•œ ํŒŒ์„œ์— JSON์„ ์ „๋‹ฌํ•˜๊ธฐ ์ „์— ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„์—์„œ ์ฃผ์„์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

Q: ์˜จ๋ผ์ธ์—์„œ JSON์„ ์–ด๋–ป๊ฒŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌํ•˜๋‚˜์š”?

A: ์˜จ๋ผ์ธ์—์„œ JSON์„ ์–ด๋–ป๊ฒŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌํ•˜๋‚˜์š”?

์˜จ๋ผ์ธ์—์„œ JSON ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค:

  1. JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค
  2. JSON ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋„๊ตฌ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค
  3. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋˜๋Š” ํฌ๋งท ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค
  4. ๋„๊ตฌ๊ฐ€ ์œ ํšจํ•œ JSON์„ ๋ณด๊ณ ํ•˜๊ฑฐ๋‚˜, ๋ฌธ์ œ์˜ ์ •ํ™•ํ•œ ์œ„์น˜์™€ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค

์ข‹์€ JSON ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋Š” ๋‹ค์Œ์„ ๊ฐ–์ถ”์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • ๊ณต์‹ JSON ์‚ฌ์–‘(RFC 8259)์— ๋”ฐ๋ผ ๊ตฌ๋ฌธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
  • ์˜ค๋ฅ˜์˜ ์ค„ ๋ฒˆํ˜ธ์™€ ์—ด ๋ฒˆํ˜ธ ํ‘œ์‹œ
  • ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•˜๋Š” ์„ค๋ช…์ ์ธ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ์ œ๊ณต
  • ์„ ํƒ์ ์œผ๋กœ ๋™์‹œ์— JSON์„ ํฌ๋งทํŒ…ํ•˜๊ณ  ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ฆฌ
  • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ๋Œ€ํ•œ ์ƒ‰์ƒ ์ฝ”๋”ฉ์œผ๋กœ ๊ตฌ๋ฌธ ๊ฐ•์กฐ

๋Œ€์šฉ๋Ÿ‰ ๋˜๋Š” ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ, ๋งŽ์€ ์˜จ๋ผ์ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋Š” ๋ชจ๋“  ์ฒ˜๋ฆฌ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๊ธฐ๋ฅผ ๋– ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Q: ์ถ•์†Œ๋œ(minified) JSON์ด๋ž€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋‚˜์š”?

A: ์ถ•์†Œ๋œ(minified) JSON์ด๋ž€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋‚˜์š”?

์ถ•์†Œ๋œ JSON์€ ๋ชจ๋“  ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ์ด ์ œ๊ฑฐ๋œ JSON์ž…๋‹ˆ๋‹ค -- ๊ณต๋ฐฑ, ํƒญ, ์ค„ ๋ฐ”๊ฟˆ ๋ฐ ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฌผ์€ ๋‹จ์ผ ์ค„(๋˜๋Š” ๋งค์šฐ ์ ์€ ์ค„)์˜ ์••์ถ•๋œ ํ…์ŠคํŠธ์ž…๋‹ˆ๋‹ค:

{"users":[{"id":1,"name":"Alice","roles":["admin"]}],"total":1}

์ถ•์†Œ๋œ JSON์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:

  • ๋” ์ž‘์€ ํŒŒ์ผ ํฌ๊ธฐ -- ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๋ฅผ 30-50% ์ด์ƒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๋” ๋น ๋ฅธ ๋„คํŠธ์›Œํฌ ์ „์†ก -- ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ ๋‹ค๋Š” ๊ฒƒ์€ ๋” ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค
  • ๋Œ€์—ญํญ ๋น„์šฉ ์ ˆ๊ฐ -- ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ API์™€ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค

๋‹จ์ ์€ ์ถ•์†Œ๋œ JSON์ด ์‚ฌ์‹ค์ƒ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…์ด๋‚˜ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด ์ถ•์†Œ๋œ JSON์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ๋‹ค์‹œ ํฌ๋งทํŒ…ํ•˜๋ ค๋ฉด JSON ํ”„๋ฆฌํ‹ฐ ํ”„๋ฆฐํŠธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

Q: ๋ช…๋ น์ค„์—์„œ JSON์„ ์–ด๋–ป๊ฒŒ ํ”„๋ฆฌํ‹ฐ ํ”„๋ฆฐํŠธํ•˜๋‚˜์š”?

A: ๋ช…๋ น์ค„์—์„œ JSON์„ ์–ด๋–ป๊ฒŒ ํ”„๋ฆฌํ‹ฐ ํ”„๋ฆฐํŠธํ•˜๋‚˜์š”?

์—ฌ๋Ÿฌ ๋ช…๋ น์ค„ ๋„๊ตฌ๋กœ JSON์„ ํ”„๋ฆฌํ‹ฐ ํ”„๋ฆฐํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

jq ์‚ฌ์šฉ (๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ์Œ, ๋ณ„๋„ ์„ค์น˜ ํ•„์š”):

cat file.json | jq .

Python ์‚ฌ์šฉ (๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์— ๋‚ด์žฅ):

python -m json.tool file.json

Node.js ์‚ฌ์šฉ:

node -e "const d = require('./data.json'); console.log(JSON.stringify(d, null, 2));"

curl ์‚ฌ์šฉ (API ์‘๋‹ต ํ”„๋ฆฌํ‹ฐ ํ”„๋ฆฐํŠธ):

curl https://api.example.com/data | jq .

jq ๋„๊ตฌ๋Š” ์ƒ‰์ƒ์ด ์ง€์ •๋œ ์ถœ๋ ฅ, ์ฟผ๋ฆฌ ๊ธฐ๋Šฅ ๋ฐ ๊ฐ•๋ ฅํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

Q: JSON Schema๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A: JSON Schema๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

JSON Schema๋Š” JSON ๋ฌธ์„œ์— ์ฃผ์„์„ ๋‹ฌ๊ณ  ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ์–ดํœ˜์ž…๋‹ˆ๋‹ค. JSON ๋ฌธ์„œ๊ฐ€ ์ถฉ์กฑํ•ด์•ผ ํ•˜๋Š” ๊ตฌ์กฐ, ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋ฐ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ JSON ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ณ„์•ฝ ๋˜๋Š” ๋ช…์„ธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

JSON Schema์˜ ์ฃผ์š” ๊ธฐ๋Šฅ:

  • ์œ ํ˜• ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ -- ๊ฐ’์ด ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ, ๋ฐฐ์—ด, ๊ฐ์ฒด ๋˜๋Š” null์ด์–ด์•ผ ํ•˜๋Š”์ง€ ์ง€์ •
  • ํ•„์ˆ˜ ํ•„๋“œ -- ํŠน์ • ์†์„ฑ์„ ํ•„์ˆ˜๋กœ ํ‘œ์‹œ
  • ๊ฐ’ ์ œ์•ฝ ์กฐ๊ฑด -- ์ตœ์†Œ/์ตœ๋Œ€๊ฐ’, ๋ฌธ์ž์—ด ํŒจํ„ด(regex), ํ—ˆ์šฉ๋œ ๊ฐ’(enums) ์„ค์ •
  • ๋ฐฐ์—ด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ -- ๋ฐฐ์—ด ๊ธธ์ด, ํ•ญ๋ชฉ ์œ ํ˜• ๋ฐ ๊ณ ์œ ์„ฑ ์ œ์–ด
  • ์ค‘์ฒฉ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ -- ์ค‘์ฒฉ๋œ ๊ฐ์ฒด ๋ฐ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์Šคํ‚ค๋งˆ ์ •์˜
  • ์กฐ๊ฑด๋ถ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ -- ๋‹ค๋ฅธ ํ•„๋“œ์˜ ๊ฐ’์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ทœ์น™ ์ ์šฉ

JSON Schema ์˜ˆ์‹œ:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": ["name", "email"],
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "email": { "type": "string", "format": "email" },
    "age": { "type": "integer", "minimum": 0, "maximum": 150 }
  }
}

JSON Schema๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ API ์š”์ฒญ ๋ณธ๋ฌธ, ๊ตฌ์„ฑ ํŒŒ์ผ ๋ฐ ์„œ๋น„์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๊ณ„์•ฝ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

JSON ํฌ๋งคํ„ฐ & ๊ฒ€์ฆ๊ธฐ FAQ - CoolTool