๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Computer Science/ETC

JSON

by hyebin (Helia) 2025. 10. 29.
๋ฐ˜์‘ํ˜•

JSON (JavaScript Object Notation)

1. ๊ฐœ๋…

JSON์€ JavaScript ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒฝ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ˜•์‹์œผ๋กœ,

์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ.

์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฝ๊ณ  ๊ธฐ๊ณ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์šฉ์ดํ•˜์—ฌ REST API ํ†ต์‹ ์˜ ํ‘œ์ค€ ํฌ๋งท์œผ๋กœ ํ™œ์šฉ๋จ.

JavaScript ๋ฌธ๋ฒ•์—์„œ ์œ ๋ž˜ํ–ˆ์ง€๋งŒ ์–ธ์–ด์— ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์ง€์›๋จ.


2. ํŠน์ง•

  • ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ€๋…์„ฑ์ด ๋†’์Œ
  • {} ๊ฐ์ฒด, [] ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ํ‘œํ˜„ ๊ฐ€๋Šฅ
  • ์–ธ์–ด ๋…๋ฆฝ์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์—์„œ ์ง€์›๋จ
  • ์ง๋ ฌํ™”(๊ฐ์ฒด → JSON)์™€ ์—ญ์ง๋ ฌํ™”(JSON → ๊ฐ์ฒด)๊ฐ€ ๊ฐ„๋‹จํ•จ
  • XML๋ณด๋‹ค ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ณ  ๋„คํŠธ์›Œํฌ ์ „์†ก ํšจ์œจ์ด ๋†’์Œ
  • ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ, ๋ฐฐ์—ด, ๊ฐ์ฒด, null ํƒ€์ž…๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ

3. ๋ฌธ๋ฒ• ๊ทœ์น™

์˜ˆ์‹œ

{
  "name": "Hyebin",
  "age": 25,
  "isBackendDeveloper": true,
  "skills": ["Java", "Spring", "MySQL"],
  "project": {
    "name": "Popin",
    "role": "Backend Developer"
  }
}

๊ทœ์น™ ์š”์•ฝ

  • ๋ฌธ์ž์—ด์€ ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ(””) ์‚ฌ์šฉ
  • key๋Š” ๋ฌธ์ž์—ด ํ˜•ํƒœ๋งŒ ๊ฐ€๋Šฅ
  • ์ฃผ์„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€
  • ์ง€์› ํƒ€์ž…: ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ, ๋ฐฐ์—ด, ๊ฐ์ฒด, null

4. ์ง๋ ฌํ™” & ์—ญ์ง๋ ฌํ™”

๊ตฌ๋ถ„ ์„ค๋ช… Java ์˜ˆ์‹œ

์ง๋ ฌํ™” ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ • new ObjectMapper().writeValueAsString(obj)
์—ญ์ง๋ ฌํ™” JSON ๋ฌธ์ž์—ด์„ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ • new ObjectMapper().readValue(json, Class.class)

Spring์—์„œ๋Š” Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ ์ ์šฉ๋˜์–ด @RestController ์‘๋‹ต์„ ์ž๋™์œผ๋กœ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•จ


5. ๋ฉด์ ‘ ํฌ์ธํŠธ ์ •๋ฆฌ

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

ํ•ต์‹ฌ ์š”์•ฝ

JSON์€ ๊ฐ€๋ณ๊ณ  ๊ตฌ์กฐ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ˜•์‹

ํ”„๋ก ํŠธ์—”๋“œ-๋ฐฑ์—”๋“œ ๊ฐ„ ํ†ต์‹  ํ‘œ์ค€ ํฌ๋งท์œผ๋กœ ์‚ฌ์šฉ๋จ

Spring์—์„œ๋Š” Jackson์ด ์ž๋™ ์ฒ˜๋ฆฌํ•จ

๋ฐ˜์‘ํ˜•

'๐Ÿ“š Computer Science > ETC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

API  (0) 2025.11.07
XML  (0) 2025.10.29