Loadingโ€ฆ

์ด JSON ํฌ๋งทํ„ฐ ์ •๋ณด ์˜จ๋ผ์ธ JSON ํฌ๋งทํ„ฐ & ๊ฒ€์ฆ๊ธฐ

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

์ด JSON ํฌ๋งทํ„ฐ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • RFC 8259 ๊ธฐ์ค€ ์—„๊ฒฉํ•œ JSON ๊ฒ€์ฆ (์ฃผ์„ ์—†์Œ, ํ›„ํ–‰ ์‰ผํ‘œ ์—†์Œ, ๋‹จ์ผ ์ธ์šฉ ๋ฌธ์ž์—ด ์—†์Œ)
  • JSON์ด ์œ ํšจํ•˜์ง€ ์•Š์„ ๋•Œ ์ค„๊ณผ ์—ด ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€
  • ์›ํด๋ฆญ ๋ชจ๋“œ ์ „ํ™˜: ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ์˜ˆ์˜๊ฒŒ ์ถœ๋ ฅ ๋˜๋Š” ์ปดํŒฉํŠธํ•œ ํฌ๊ธฐ๋ฅผ ์œ„ํ•œ ์••์ถ•
  • ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๋“ค์—ฌ์“ฐ๊ธฐ: ๊ณต๋ฐฑ ๋˜๋Š” ํƒญ, ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€๋‹น 1~8์ž
  • .json ํŒŒ์ผ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ง€์› (ํŒŒ์ผ๋‹น ์ตœ๋Œ€ ์•ฝ 5MB)
  • ๋‹ค์ค‘ ํŒŒ์ผ ์›Œํฌํ”Œ๋กœ: ํ•œ ์„ธ์…˜์—์„œ ์—ฌ๋Ÿฌ JSON ์Šค๋‹ˆํŽซ์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์‚ฌํ•˜๊ณ  ํฌ๋งท
  • ํŽธ์ง‘๊ธฐ์—์„œ 100% ํด๋ผ์ด์–ธํŠธ ์ธก ํฌ๋งทํŒ… โ€” JSON์€ ๋Œ€ํ™”ํ˜• ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ์ปฌ๋กœ ์ฒ˜๋ฆฌ๋จ
  • API ์‘๋‹ต, ๊ตฌ์„ฑ ํŒŒ์ผ, ๋กœ๊ทธ, ์›นํ›…, ํ”ฝ์Šค์ฒ˜ ๋ฐ ๋ฌธ์„œ์˜ ์ƒ˜ํ”Œ ํŽ˜์ด๋กœ๋“œ์— ์ด์ƒ์ 

๐Ÿ”ง JSON ํฌ๋งทํŒ… ๋ฐ ๊ฒ€์ฆ ๋ฐฉ๋ฒ• (๋‹จ๊ณ„๋ณ„) for json-formatter

1

JSON ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋˜๋Š” ๋“œ๋กญ

JSON์„ ํŽธ์ง‘๊ธฐ์— ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ .json ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•˜์„ธ์š”. ๋„๊ตฌ๊ฐ€ JSON์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ๊ฒ€์ฆ์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

2

ํฌ๋งท ๋˜๋Š” ์••์ถ• ์„ ํƒ

์›ํ•˜๋Š” ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•˜์„ธ์š”: ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ์˜ˆ์˜๊ฒŒ ์ถœ๋ ฅ ๋˜๋Š” JSON์„ ์••์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์••์ถ• ๋ชจ๋“œ. ์ฝ˜ํ…์ธ ๋ฅผ ์žƒ์ง€ ์•Š๊ณ  ์–ธ์ œ๋“ ์ง€ ๋ชจ๋“œ๋ฅผ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3

๋“ค์—ฌ์“ฐ๊ธฐ ์กฐ์ •

๊ณต๋ฐฑ ๋˜๋Š” ํƒญ์„ ์„ ํƒํ•˜๊ณ  ๋“ค์—ฌ์“ฐ๊ธฐ ํฌ๊ธฐ(1~8)๋ฅผ ์„ค์ •ํ•˜์„ธ์š”. ์ด๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋”ฉ ์Šคํƒ€์ผ, .editorconfig ์„ค์ • ๋˜๋Š” ํŒ€ ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

4

๊ฒ€์ฆ ๋ฐ ๊ฒ€์‚ฌ

ํฌ๋งทํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”. JSON์ด ์œ ํšจํ•˜๋ฉด ์ฆ‰์‹œ ํฌ๋งทํŒ…๋ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด ์ค„๊ณผ ์—ด ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์–ด ๋น ๋ฅด๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5

๋ณต์‚ฌ ๋˜๋Š” ๋‹ค์šด๋กœ๋“œ

๊ฒฐ๊ณผ๋ฅผ ํŽธ์ง‘๊ธฐ๋กœ ๋‹ค์‹œ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ํฌ๋งทํŒ…๋œ JSON์„ ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ํ…Œ์ŠคํŠธ, ๊ตฌ์„ฑ ๋˜๋Š” ๋ฌธ์„œ์—์„œ ์žฌ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ธฐ์ˆ  ์‚ฌ์–‘

JSON ์ค€์ˆ˜ ๋ฐ ๊ตฌ๋ฌธ ๋ถ„์„ ๊ทœ์น™

์ด ํฌ๋งทํ„ฐ๋Š” RFC 8259์™€ ECMA-404๋กœ ์ •์˜๋œ ์—„๊ฒฉํ•œ JSON์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์ง€์›์ฐธ๊ณ 
์—„๊ฒฉํ•œ RFC 8259 ๊ตฌ๋ฌธ ๋ถ„์„โœ… ์˜ˆ์ž˜๋ชป๋œ ๊ตฌ์กฐ์™€ ํ˜•์‹์ด ๋งž์ง€ ์•Š๋Š” JSON์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์„ (// ๋˜๋Š” /* */)โŒ ์•„๋‹ˆ์˜ค๋ถ™์—ฌ๋„ฃ๊ธฐ ์ „์— JSON5๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ์ฃผ์„์„ ์ œ๊ฑฐํ•˜์„ธ์š”.
ํ›„ํ–‰ ์‰ผํ‘œโŒ ์•„๋‹ˆ์˜ค์—„๊ฒฉํ•œ JSON ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์—์„œ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด์— ๋‹จ์ผ ๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉโŒ ์•„๋‹ˆ์˜คJSON์—์„œ ๋ฌธ์ž์—ด์€ ๋ฐ˜๋“œ์‹œ ์Œ๋”ฐ์˜ดํ‘œ "..."๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์œ ๋‹ˆ์ฝ”๋“œ ๋ฐ ์ด๋ชจ์ง€โœ… ์˜ˆ\u ์ด์Šค์ผ€์ดํ”„์™€ ํ˜„๋Œ€ ์ด๋ชจ์ง€๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
ํฐ ์ •์ˆ˜โœ… ์ฃผ์˜ ํ•„์š”JSON ์ˆซ์ž๋กœ ํŒŒ์‹ฑ๋˜๋ฉฐ, ์ผ๋ถ€ ํ™˜๊ฒฝ์—์„œ๋Š” ์ •๋ฐ€๋„๋ฅผ ์žƒ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (ํ•„์š”์‹œ ID์—๋Š” ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜์„ธ์š”).
์ฃผ์„, ํ›„ํ–‰ ์‰ผํ‘œ ๋˜๋Š” ์™„ํ™”๋œ ๋ฌธ๋ฒ•์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— JSON5/YAML์—์„œ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

์ œํ•œ, ์„ฑ๋Šฅ ๋ฐ ํƒ€์ž„์•„์›ƒ

์ผ๋ฐ˜์ ์ธ ์›น ์ž‘์—… ๋ถ€ํ•˜์— ์ตœ์ ํ™”๋จ: API ์‘๋‹ต, ์„ค์ • ๋ฐ ์ค‘๊ฐ„ ํฌ๊ธฐ ๋ฐ์ดํ„ฐ์…‹.

์ž…๋ ฅ ์œ ํ˜•๋Œ€๋žต์  ์ œํ•œ์„ธ๋ถ€ ์‚ฌํ•ญ
์ผ๋ฐ˜ ํ…์ŠคํŠธ ์ž…๋ ฅ~2 MBํฌ๋งคํ„ฐ ๋กœ์ง์—์„œ ๊ฐ•์ œ๋˜๋Š” ์•ˆ์ „ ์ œํ•œ.
์—…๋กœ๋“œ๋œ .json ํŒŒ์ผ~5 MBUI ํŒŒ์ผ ํฌ๊ธฐ ์ œํ•œ์— ์˜ํ•ด ์ œ์•ฝ๋จ.
ํฌ๋งทํŒ… ์‹œ๊ฐ„< 1์ดˆ (์ผ๋ฐ˜์ )์ž…๋ ฅ ํฌ๊ธฐ์™€ ๋ธŒ๋ผ์šฐ์ € ์„ฑ๋Šฅ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„.
ํƒ€์ž„์•„์›ƒ ๋ณดํ˜ธโœ… ํ™œ์„ฑํ™”๋จ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ๋ฉˆ์ถœ ๊ฒฝ์šฐ ํฌ๋งทํŒ…์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
๋งค์šฐ ํฐ JSON ํŒŒ์ผ(์ˆ˜์‹ญ MB ์ด์ƒ)์˜ ๊ฒฝ์šฐ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋ช…๋ น์ค„ ๋„๊ตฌ(jq, Node.js, Python)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋“ค์—ฌ์“ฐ๊ธฐ, ์ค„๋ฐ”๊ฟˆ ๋ฐ ์ถœ๋ ฅ ์Šคํƒ€์ผ

ํŽธ์ง‘๊ธฐ๋‚˜ ์ฝ”๋“œ๋ฒ ์ด์Šค ๊ทœ์น™์— ๋งž๊ฒŒ JSON ๋ Œ๋”๋ง ๋ฐฉ์‹์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •์˜ต์…˜๊ถŒ์žฅ ์‚ฌ์šฉ๋ฒ•
๋“ค์—ฌ์“ฐ๊ธฐ ์Šคํƒ€์ผ๊ณต๋ฐฑ / ํƒญ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์—๋Š” ๊ณต๋ฐฑ์„ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐœ์ธ ์„ ํ˜ธ๋„๋‚˜ ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ์—๋Š” ํƒญ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
๋“ค์—ฌ์“ฐ๊ธฐ ํฌ๊ธฐ1โ€“8๊ฐ„๊ฒฐํ•œ API์—๋Š” 2์นธ ๊ณต๋ฐฑ, ๊ฐ€๋…์„ฑ ๊ทน๋Œ€ํ™”์—๋Š” 4์นธ ๊ณต๋ฐฑ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
์ค„ ๋ ๋ฌธ์žLF / CRLF์œ ๋‹‰์Šค ๊ณ„์—ด ์‹œ์Šคํ…œ์—๋Š” LF(\n), Windows ์ค‘์‹ฌ ํ”„๋กœ์ ํŠธ์—๋Š” CRLF(\r\n)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
์ตœ์ข… ์ค„๋ฐ”๊ฟˆ์ผฌ / ๋”POSIX ๋„๊ตฌ์™€ ๊น”๋”ํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ diff๋ฅผ ์œ„ํ•ด ์ผฌ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
์ผ๊ด€๋œ ์„œ์‹์€ Git์—์„œ ๋ถˆํ•„์š”ํ•œ diff๋ฅผ ์ค„์ด๊ณ  ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ช…๋ น์ค„ JSON ์„œ์‹ ์ง€์ • ๋Œ€์•ˆ

ํ„ฐ๋ฏธ๋„์—์„œ ์ž‘์—…์„ ์„ ํ˜ธํ•˜์‹œ๋‚˜์š”? ๋ช…๋ น์ค„์—์„œ ์ง์ ‘ JSON์„ ์„œ์‹ ์ง€์ •ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•๋“ค์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค / ๐Ÿ macOS

jq๋กœ JSON ์˜ˆ์˜๊ฒŒ ์ถœ๋ ฅํ•˜๊ธฐ

cat data.json | jq .

jq๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON์„ ๊ฒ€์ฆํ•˜๊ณ  ์˜ˆ์˜๊ฒŒ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

jq๋กœ JSON ์ตœ์†Œํ™”ํ•˜๊ธฐ

cat data.json | jq -c .

์ €์žฅ ๋˜๋Š” ์ „์†ก์„ ์œ„ํ•ด ์••์ถ•๋œ ํ•œ ์ค„ JSON์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Node.js๋กœ JSON ์„œ์‹ ์ง€์ •ํ•˜๊ธฐ

node -e "console.log(JSON.stringify(JSON.parse(require('fs').readFileSync('data.json','utf8')), null, 2));"

๋‚ด์žฅ๋œ Node.js JSON.parse์™€ JSON.stringify๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

Windows (PowerShell)

PowerShell์—์„œ JSON ์˜ˆ์˜๊ฒŒ ์ถœ๋ ฅํ•˜๊ธฐ

Get-Content .\data.json | ConvertFrom-Json | ConvertTo-Json -Depth 20

JSON์„ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋‹ค์‹œ ์˜ˆ์˜๊ฒŒ ์„œ์‹์ด ์ง€์ •๋œ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

PowerShell + .NET์œผ๋กœ JSON ์ตœ์†Œํ™”ํ•˜๊ธฐ

$json = Get-Content .\data.json -Raw; $obj = $json | ConvertFrom-Json; $min = $obj | ConvertTo-Json -Depth 20 -Compress; $min | Set-Content .\data.min.json

์••์ถ•/์ตœ์†Œํ™”๋œ JSON ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊น…์ด๋‚˜ JSON ํƒ์ƒ‰ ์‹œ ์ด ์˜จ๋ผ์ธ ํฌ๋งทํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ๋Š” jq, Node.js ๋˜๋Š” ์„ ํ˜ธํ•˜๋Š” ์–ธ์–ด๋กœ ์„œ์‹ ์ง€์ •์„ ์ž๋™ํ™”ํ•˜์„ธ์š”.

์‹ค์šฉ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€

API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ

REST, GraphQL ๋˜๋Š” ์›นํ›… ํ†ตํ•ฉ์˜ JSON ์‘๋‹ต์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์‚ฌํ•˜๊ณ  ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์Šคํ…Œ์ด์ง• ๋˜๋Š” ํ”„๋กœ๋•์…˜ API์˜ ์ž˜๋ชป๋œ ์‘๋‹ต์„ ๋””๋ฒ„๊น…ํ•ฉ๋‹ˆ๋‹ค.
  • Stripe, GitHub ๋˜๋Š” ๋‹ค๋ฅธ ์ œ๊ณต์—…์ฒด์˜ ์›นํ›… ํŽ˜์ด๋กœ๋“œ๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ํ‹ฐ์ผ“, ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋˜๋Š” ๋ฌธ์„œ์—์„œ ๊น”๋”ํ•˜๊ฒŒ ํฌ๋งท๋œ JSON ์Šค๋‹ˆํŽซ์„ ๊ณต์œ ํ•˜์„ธ์š”.
// ์˜ˆ์‹œ: API์—์„œ JSON์„ ๊ฐ€์ ธ์™€ ํฌ๋งท๋œ ์ถœ๋ ฅ ๊ธฐ๋ก
fetch("/api/data")
  .then((res) => res.json())
  .then((json) => console.log(JSON.stringify(json, null, 2)));

ํ”„๋ก ํŠธ์—”๋“œ & ์„ค์ • ํŒŒ์ผ

ํ”„๋ก ํŠธ์—”๋“œ ์„ค์ • ๋ฐ ์ฝ˜ํ…์ธ  ํŒŒ์ผ์„ ๊น”๋”ํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”.

  • JSON์œผ๋กœ ์ €์žฅ๋œ React / Next.js ์„ค์ • ํŒŒ์ผ์„ ํฌ๋งทํ•˜์„ธ์š”.
  • ๋ฒˆ์—ญ / i18n JSON ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์„ ์ •๋ฆฌํ•˜์„ธ์š”.
  • ๋””์ž์ธ ํ† ํฐ, ํ…Œ๋งˆ ์„ค์ • ๋˜๋Š” UI ์Šคํ‚ค๋งˆ ์ •์˜๋ฅผ ํ‘œ์ค€ํ™”ํ•˜์„ธ์š”.
// ์˜ˆ์‹œ: JSON ์„ค์ •์„ ์œ„ํ•œ ์—„๊ฒฉํ•œ TypeScript ํƒ€์ž…
interface AppConfig {
  apiBaseUrl: string;
  features: { [key: string]: boolean };
}

const config: AppConfig = require("./config.json");

๊ต์œก ๋ฐ JSON ํ•™์Šต

ํ•™์ƒ๊ณผ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ JSON ๊ธฐ์ดˆ๋ฅผ ๊ฐ€๋ฅด์น˜์„ธ์š”.

  • ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์œ ํšจํ•œ JSON๊ณผ ์œ ํšจํ•˜์ง€ ์•Š์€ JSON์„ ๋ณด์—ฌ์ฃผ์„ธ์š”.
  • ์˜ˆ์˜๊ฒŒ ์ถœ๋ ฅ(pretty-printing)์ด ๊ฐ€๋…์„ฑ๊ณผ ๋””๋ฒ„๊น…์„ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ์„ธ์š”.
  • ์ˆ˜์—…์—์„œ ์ค‘์ฒฉ ๊ตฌ์กฐ์™€ ๋ฐฐ์—ด์„ ๋Œ€ํ™”ํ˜•์œผ๋กœ ํƒ์ƒ‰ํ•˜์„ธ์š”.
// ์˜ˆ์‹œ: ๊ต์œก์šฉ ๊ฐ„๋‹จํ•œ JSON ๊ฐ์ฒด
{
  "name": "Ada",
  "languages": ["JavaScript", "Python", "Go"],
  "active": true
}

โ“ Frequently Asked Questions

โ“์ด JSON ํฌ๋งทํ„ฐ๋Š” ๋ฌด์—‡์— ์‚ฌ์šฉ๋˜๋‚˜์š”?

์ด ๋„๊ตฌ๋Š” JSON์„ ๊ฒ€์ฆํ•˜๊ณ  ์žฌํฌ๋งทํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ์˜ˆ์œ ์ถœ๋ ฅ(pretty-print), ์ปดํŒฉํŠธ ์ €์žฅ์„ ์œ„ํ•œ ์ตœ์†Œํ™”(minify), ๊ทธ๋ฆฌ๊ณ  API ์‘๋‹ต, ์„ค์ • ํŒŒ์ผ, ์›นํ›…, ํ”ฝ์Šค์ฒ˜, ๋กœ๊ทธ์—์„œ ์‹ ํƒ์Šค ์˜ค๋ฅ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿงช์ด ๋„๊ตฌ๋Š” ์—„๊ฒฉํ•œ JSON ๊ทœ์น™์„ ๋”ฐ๋ฅด๋‚˜์š”?

๋„ค. ์ด ํฌ๋งทํ„ฐ๋Š” RFC 8259 ๋ฐ ECMA-404์™€ ํ˜ธํ™˜๋˜๋Š” ์—„๊ฒฉํ•œ JSON ํŒŒ์‹ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฃผ์„ ์—†์Œ, ํ›„ํ–‰ ์‰ผํ‘œ ์—†์Œ, ๋ชจ๋“  ๋ฌธ์ž์—ด์— ํฐ๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ, ์œ ํšจํ•œ JSON ํƒ€์ž…๋งŒ(๊ฐ์ฒด, ๋ฐฐ์—ด, ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ, null) ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“JSON ์ž…๋ ฅ์— ํฌ๊ธฐ ์ œํ•œ์ด ์žˆ๋‚˜์š”?

์•ˆ์ •์„ฑ๊ณผ ๋ธŒ๋ผ์šฐ์ € ์„ฑ๋Šฅ์„ ์œ„ํ•ด ํ…์ŠคํŠธ ์ž…๋ ฅ์€ ์•ฝ 2MB, ์—…๋กœ๋“œ ํŒŒ์ผ์€ ์•ฝ 5MB๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ํฐ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ jq, Node.js ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์–ธ์–ด๋ณ„ ํฌ๋งทํ„ฐ์™€ ๊ฐ™์€ ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๐Ÿ”์ด ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ œ JSON ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๋‚˜์š”?

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

๐Ÿ’ฌ์™œ ์ฃผ์„์ด๋‚˜ ํ›„ํ–‰ ์‰ผํ‘œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋‚˜์š”?

ํ‘œ์ค€ JSON์€ ์ฃผ์„์ด๋‚˜ ํ›„ํ–‰ ์‰ผํ‘œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์€ JSON5๋‚˜ ์ผ๋ถ€ ํŒŒ์„œ ํ™•์žฅ๊ณผ ๊ฐ™์€ ์™„ํ™”๋œ ํ˜•์‹์— ์†ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์„์ด๋‚˜ ํ›„ํ–‰ ์‰ผํ‘œ๊ฐ€ ์žˆ๋Š” JSON์„ ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ •๊ทœํ™”ํ•  ๋•Œ๊นŒ์ง€ ๋„๊ตฌ๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

โš™๏ธ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ๋“ค์—ฌ์“ฐ๊ธฐ ์Šคํƒ€์ผ์„ ์–ด๋–ป๊ฒŒ ๋งž์ถœ ์ˆ˜ ์žˆ๋‚˜์š”?

ํฌ๋งทํŒ… ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ŠคํŽ˜์ด์Šค๋‚˜ ํƒญ์„ ์„ ํƒํ•˜๊ณ  1์—์„œ 8 ์‚ฌ์ด์˜ ๋“ค์—ฌ์“ฐ๊ธฐ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜์„ธ์š”. ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ, .editorconfig ์„ค์ • ๋˜๋Š” ํŒ€ ์„ ํ˜ธ๋„์— ๋งž๊ฒŒ ์ถœ๋ ฅ์„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“‰์˜ˆ์œ ์ถœ๋ ฅ(pretty-print)๊ณผ ์ตœ์†Œํ™”(minify)์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

์˜ˆ์œ ์ถœ๋ ฅ์€ JSON์„ ๋” ์‰ฝ๊ฒŒ ์ฝ๊ณ  ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค„ ๋ฐ”๊ฟˆ๊ณผ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ™”๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ชจ๋“  ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๋ฉฐ, ์ด๋Š” ์ปดํŒฉํŠธ ์ €์žฅ, ๋‚ฎ์€ ๋Œ€์—ญํญ ์‘๋‹ต ๋˜๋Š” HTML/JS์— JSON ์ž„๋ฒ ๋”ฉ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Pro Tips

Best Practice

์„œ๋น„์Šค ๊ฐ„ JSON ํ‚ค๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”(์Šค๋„ค์ดํฌ ์ผ€์ด์Šค๋‚˜ ์นด๋ฉœ ์ผ€์ด์Šค). ๋ฏธ๋ฌ˜ํ•œ ํ†ตํ•ฉ ๋ฒ„๊ทธ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Best Practice

ํ”„๋กœ๋•์…˜ ํŽ˜์ด๋กœ๋“œ์—๋Š” ์••์ถ•๋œ JSON์„, ๋กœ๊ทธ์™€ ๋””๋ฒ„๊น…์—๋Š” ๊ฐ€๋…์„ฑ ์ข‹์€ JSON์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ๊ณผ ๊ฐ€๋…์„ฑ์˜ ๊ท ํ˜•์„ ๋งž์ถ”์„ธ์š”.

Best Practice

๋น„๋ฐ€ ์ •๋ณด(ํ† ํฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ, API ํ‚ค)๊ฐ€ ํฌํ•จ๋œ ์ „์ฒด JSON ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ ˆ๋Œ€ ๋กœ๊น…ํ•˜์ง€ ๋งˆ์„ธ์š”. ๊ณต์œ ํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ํ•„๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋งˆ์Šคํ‚นํ•˜์„ธ์š”.

Best Practice

CI ํŒŒ์ดํ”„๋ผ์ธ์— ํฌ๋งทํŒ… ๋‹จ๊ณ„(jq, Prettier, ์–ธ์–ด๋ณ„ ๋„๊ตฌ)๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ JSON ์„ค์ • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ณ‘ํ•ฉ ์ „์— ํ•ญ์ƒ ์ •๊ทœํ™”๋˜๋„๋ก ํ•˜์„ธ์š”.

Additional Resources

Other Tools