IT๊ธฐ์ดˆ

JSON์ด๋ž€? – JSON ๋œป, ๋ชฉ์ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ˜•์‹ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

๐Ÿฅ„ํ…Œํฌ ํ•œ ์Šคํ‘ผ 2026. 5. 30. 23:25

๋ชฉ์ฐจ

  1. API ์‘๋‹ต์—์„œ ์ž๊พธ ๋‚˜์˜ค๋Š” ์ด ํ˜•ํƒœ๋Š” ๋ฌด์—‡์ธ๊ฐ€?
  2. JSON์˜ ์ •์˜
  3. JSON์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
  4. JSON์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…
  5. JSON vs XML – ์™œ JSON์ด ๋Œ€์„ธ๊ฐ€ ๋๋‚˜?
  6. ์‹ค์ œ ์„œ๋น„์Šค์—์„œ JSON์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹
  7. ์ •๋ฆฌ ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„

1. API ์‘๋‹ต์—์„œ ์ž๊พธ ๋‚˜์˜ค๋Š” ์ด ํ˜•ํƒœ๋Š” ๋ฌด์—‡์ธ๊ฐ€?

REST API๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ์„œ๋ฒ„ ์‘๋‹ต ์˜ˆ์‹œ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ์ž์ฃผ ๋ดค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 
{
  "name": "ํ™๊ธธ๋™",
  "age": 30,
  "email": "hong@example.com"
}

์ค‘๊ด„ํ˜ธ, ๋”ฐ์˜ดํ‘œ, ์ฝœ๋ก , ์‰ผํ‘œ๋กœ ์ด๋ฃจ์–ด์ง„ ์ด ํ˜•ํƒœ๊ฐ€ ๋ฐ”๋กœ JSON์ž…๋‹ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” ํ˜•์‹์ž…๋‹ˆ๋‹ค.

2. JSON์˜ ์ •์˜

**JSON(JavaScript Object Notation)**์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ๊ฒฝ๋Ÿ‰ ๋ฐ์ดํ„ฐ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์— JavaScript๊ฐ€ ๋“ค์–ด๊ฐ€์ง€๋งŒ ํŠน์ • ์–ธ์–ด์— ์ข…์†๋˜์ง€ ์•Š์œผ๋ฉฐ, Python, Java, PHP, Go ๋“ฑ ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JSON์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฝ๊ณ , ์ปดํ“จํ„ฐ๊ฐ€ ํŒŒ์‹ฑํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ์šฉ๋Ÿ‰์ด ๊ฐ€๋ฒผ์›Œ API ํ†ต์‹ ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

3. JSON์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

JSON์€ ํ‚ค(key)์™€ ๊ฐ’(value)์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์•ผ ํ•˜๊ณ , ํ‚ค์™€ ๊ฐ’์€ ์ฝœ๋ก (:)์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ์Œ์€ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

 
{
  "ํ‚ค": ๊ฐ’,
  "ํ‚ค": ๊ฐ’
}

์‹ค์ œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋‹ด์€ JSON ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

{
  "id": 1,
  "name": "ํ™๊ธธ๋™",
  "email": "hong@example.com",
  "isActive": true
}

4. JSON์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…

JSON์—์„œ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์€ 6๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด(String): ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์Œ‰๋‹ˆ๋‹ค. "ํ™๊ธธ๋™", "seoul" ์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ˆซ์ž(Number): ๋”ฐ์˜ดํ‘œ ์—†์ด ์”๋‹ˆ๋‹ค. 30, 3.14, -100 ์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋ถˆ๋ฆฌ์–ธ(Boolean): ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. true ๋˜๋Š” false๋กœ ์”๋‹ˆ๋‹ค.

null: ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. null๋กœ ์”๋‹ˆ๋‹ค.

๋ฐฐ์—ด(Array): ๋Œ€๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ๊ณ  ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ’์„ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "hobbies": ["๋…์„œ", "์šด๋™", "์ฝ”๋”ฉ"]
}

๊ฐ์ฒด(Object): ์ค‘๊ด„ํ˜ธ๋กœ ๊ฐ์‹ผ ํ‚ค-๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด ์•ˆ์— ๊ฐ์ฒด๋ฅผ ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "user": {
    "name": "ํ™๊ธธ๋™",
    "address": {
      "city": "์„œ์šธ",
      "zip": "04524"
    }
  }
}

5. JSON vs XML – ์™œ JSON์ด ๋Œ€์„ธ๊ฐ€ ๋๋‚˜?

JSON์ด ๋“ฑ์žฅํ•˜๊ธฐ ์ „์—๋Š” **XML(eXtensible Markup Language)**์ด ๋ฐ์ดํ„ฐ ๊ตํ™˜์˜ ํ‘œ์ค€์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ํ˜•์‹์„ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋กœ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

XML๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<user>
  <name>ํ™๊ธธ๋™</name>
  <age>30</age>
  <email>hong@example.com</email>
</user>

 

JSON์œผ๋กœ ๊ฐ™์€ ๋‚ด์šฉ์„ ํ‘œํ˜„ํ•˜๋ฉด ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

{
  "name": "ํ™๊ธธ๋™",
  "age": 30,
  "email": "hong@example.com"
}
๊ตฌ๋ถ„JSONXML
๊ฐ€๋…์„ฑ ๋†’์Œ ๋ณดํ†ต
์šฉ๋Ÿ‰ ๊ฐ€๋ฒผ์›€ ๋ฌด๊ฑฐ์›€
ํŒŒ์‹ฑ ์†๋„ ๋น ๋ฆ„ ๋А๋ฆผ
๋ฌธ๋ฒ• ๋‹จ์ˆœ ๋ณต์žก
ํ˜„์žฌ ์‚ฌ์šฉ ๋Œ€๋ถ€๋ถ„์˜ ์›น API ์ผ๋ถ€ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ

JSON์ด ๊ฐ€๋ณ๊ณ  ์ฝ๊ธฐ ์‰ฌ์šฐ๋ฉฐ JavaScript์™€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๋™๋œ๋‹ค๋Š” ์žฅ์  ๋•๋ถ„์—, ํ˜„์žฌ๋Š” ์›น API์˜ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค.

6. ์‹ค์ œ ์„œ๋น„์Šค์—์„œ JSON์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹

REST API ์‘๋‹ต ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ๋ ค์ค„ ๋•Œ JSON ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‡ผํ•‘๋ชฐ์—์„œ ์ƒํ’ˆ ๋ชฉ๋ก์„ ์š”์ฒญํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ JSON ๋ฐฐ์—ด๋กœ ์‘๋‹ต์ด ์˜ต๋‹ˆ๋‹ค.

[
  {
    "id": 1,
    "name": "๋…ธํŠธ๋ถ",
    "price": 1200000,
    "inStock": true
  },
  {
    "id": 2,
    "name": "๋งˆ์šฐ์Šค",
    "price": 35000,
    "inStock": false
  }
]

์„ค์ • ํŒŒ์ผ ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์ • ํŒŒ์ผ์„ JSON ํ˜•์‹์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. Node.js ํ”„๋กœ์ ํŠธ์˜ package.json, VS Code์˜ ์„ค์ • ํŒŒ์ผ์ด ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๋ธŒ๋ผ์šฐ์ €์˜ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ๋„ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

7. ์ •๋ฆฌ ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„

์˜ค๋Š˜ ๋ฐฐ์šด ํ•ต์‹ฌ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • JSON์€ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ๋Ÿ‰ ๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ, REST API ํ†ต์‹ ์˜ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค.
  • ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ, null, ๋ฐฐ์—ด, ๊ฐ์ฒด 6๊ฐ€์ง€ ํƒ€์ž…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • XML๋ณด๋‹ค ๊ฐ€๋ณ๊ณ  ์ฝ๊ธฐ ์‰ฌ์›Œ ํ˜„์žฌ ์›น ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ˜•์‹์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์•ผ ํ•˜๋ฉฐ, ๋ฌธ์ž์—ด ๊ฐ’๋„ ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด, ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์–ด๋–ป๊ฒŒ ์œ ์ง€๋˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.