๋ฐ์ํ
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 |