๋ชฉ์ฐจ
- API ์๋ต์์ ์๊พธ ๋์ค๋ ์ด ํํ๋ ๋ฌด์์ธ๊ฐ?
- JSON์ ์ ์
- JSON์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
- JSON์์ ์ฌ์ฉํ ์ ์๋ ๋ฐ์ดํฐ ํ์
- JSON vs XML – ์ JSON์ด ๋์ธ๊ฐ ๋๋?
- ์ค์ ์๋น์ค์์ JSON์ด ์ฌ์ฉ๋๋ ๋ฐฉ์
- ์ ๋ฆฌ ๋ฐ ๋ค์ ๋จ๊ณ
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"
}
| ๊ฐ๋ ์ฑ | ๋์ | ๋ณดํต |
| ์ฉ๋ | ๊ฐ๋ฒผ์ | ๋ฌด๊ฑฐ์ |
| ํ์ฑ ์๋ | ๋น ๋ฆ | ๋๋ฆผ |
| ๋ฌธ๋ฒ | ๋จ์ | ๋ณต์ก |
| ํ์ฌ ์ฌ์ฉ | ๋๋ถ๋ถ์ ์น 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๋ณด๋ค ๊ฐ๋ณ๊ณ ์ฝ๊ธฐ ์ฌ์ ํ์ฌ ์น ์๋น์ค์ ๋ฐ์ดํฐ ๊ตํ ํ์์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ํค๋ ๋ฐ๋์ ํฐ๋ฐ์ดํ๋ก ๊ฐ์ธ์ผ ํ๋ฉฐ, ๋ฌธ์์ด ๊ฐ๋ ํฐ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์ ๊ธ์์๋ ์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด, ๋ก๊ทธ์ธ ์ํ๊ฐ ์ด๋ป๊ฒ ์ ์ง๋๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.