JSON (JavaScript Object Notation)
- JavaScript Object Notation๋ผ๋ ์๋ฏธ์ ์ถ์ฝ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ ์กํ ๋ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒฝ๋์ DATA ๊ตํ ํ์
- Javascript์์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ํํ์์ ์๋ฏธํ๋ค.
- JSON ํํ์์ ์ฌ๋๊ณผ ๊ธฐ๊ณ ๋ชจ๋ ์ดํดํ๊ธฐ ์ฌ์ฐ๋ฉฐ ์ฉ๋์ด ์์์, ์ต๊ทผ์๋ JSON์ด XML์ ๋์ฒดํด์ ๋ฐ์ดํฐ ์ ์ก ๋ฑ์ ๋ง์ด ์ฌ์ฉํ๋ค.
- JSON์ ๋ฐ์ดํฐ ํฌ๋งท์ผ ๋ฟ์ด๋ฉฐ ์ด๋ ํ ํต์ ๋ฐฉ๋ฒ๋, ํ๋ก๊ทธ๋๋ฐ ๋ฌธ๋ฒ๋ ์๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ํํ ๋ฐฉ๋ฒ์ผ ๋ฟ์ด๋ค.
JSON ํน์ง
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๊ต๋ฅ์์ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ํ๊ธฐ๋ฒ๊ณผ ์์ฃผ ์ ์ฌํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ JSON ํ์์ ๋ฌธ์๋ฅผ ์ฝ๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ๋ณํํ ์ ์๋ ์ด์ ์ด ์๋ค.
- JSON ๋ฌธ์ ํ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ํ์์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฌธ๋ฒ๊ณผ ๊ต์ฅํ ์ ์ฌํ์ง๋ง ํ ์คํธ ํ์์ผ ๋ฟ์ด๋ค.
- ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํด์๋ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
- ํน์ ์ธ์ด์ ์ข ์๋์ง ์์ผ๋ฉฐ, ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ JSON ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ ํธ๋ค๋ง ํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค.
XML vs JSON
๋ฐ์ดํฐ๋ฅผ ๋ํ๋ผ ์ ์๋ ๋ฐฉ์์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง, ๋ํ์ ์ธ ๊ฒ์ด XML์ด๊ณ , ์ดํ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋ง๋ JSON์ผ ๊ฒ์ด๋ค.
XML
- ๋ฐ์ดํฐ ๊ฐ ์์ชฝ์ผ๋ก ํ๊ทธ๊ฐ ์๋ค.
(HTML์ ๊ทผ๋ณธ์ผ๋ก ํ๊ธฐ์ ํ๊ทธ๋ผ๋ ๊ฒ์ด ์์ ์๊ฐ ์๋๋ฐ, ๊ทธ ํ๊ทธ๋ฅผ ์ค์ธ๋ค ํด๋ ์ต์ํ ํํํ๋ ค๋ฉด ์์ชฝ์ ๋ช๊ธ์์ฉ์ด ์์ด์ผ ํ๋ค.)
JSON
- ํ๊ทธ๋ก ํํํ๊ธฐ ๋ณด๋ค๋ ์ค๊ดํธ({}) ๊ฐ์ ํ์์ผ๋ก ํ๊ณ , ๊ฐ์ ','๋ก ๋์ดํ๊ธฐ์ ๊ทธ ํํ์ด ๊ฐ๋จํ๋ค.
JSON ๋ฌธ๋ฒ
{
"employees": [
{
"name": "Surim",
"lastName": "Son"
},
{
"name": "Someone",
"lastName": "Huh"
},
{
"name": "Someone else",
"lastName": "Kim"
}
]
}
- JSON ํ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก key / value๊ฐ ์กด์ฌํ ์ ์์ผ๋ฉฐ key๊ฐ์ด๋ ๋ฌธ์์ด์ ํญ์ ์๋ฐ์ดํ๋ฅผ ์ด์ฉํ์ฌ ํ๊ธฐํด์ผํ๋ค.
- ๊ฐ์ฒด, ๋ฐฐ์ด ๋ฑ์ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด์ฒ๋ผ ์ํ๋ ๋งํผ ์ค์ฒฉ์์ผ์ ์ฌ์ฉํ ์๋ ์๋ค.
- JSONํ์์์๋ null, number, string, array, object, boolean์ ์ฌ์ฉํ ์ ์๋ค.
JSON ํ์
1. name-valueํ์์ ์
- ์ฌ๋ฌ๊ฐ์ง ์ธ์ด๋ค์์ object๋ฑ์ผ๋ก ์คํ๋์๋ค.
- { String key : String value }
{
"firstName": "Kwon",
"lastName": "YoungJae",
"email": "kyoje11@gmail.com"
}
2. ๊ฐ๋ค์ ์์ํ๋ ๋ฆฌ์คํธ ํ์
- ์ฌ๋ฌ๊ฐ์ง ์ธ์ด๋ค์์ ๋ฐฐ์ด(Array) ๋ฑ์ผ๋ก ์คํ๋์๋ค.
- [value1, value2, ...]
{
"firstName": "Kwon",
"lastName": "YoungJae",
"email": "kyoje11@gmail.com",
"hobby": ["puzzles","swimming"]
}
JSON์ ๋ฌธ์ ์
AJAX ๋ ๋จ์ํ ๋ฐ์ดํฐ๋ง์ด ์๋๋ผ JavaScript ๊ทธ ์์ฒด๋ ์ ๋ฌํ ์ ์๋ค. ์ด ๋ง์ JSON๋ฐ์ดํฐ๋ผ๊ณ ํด์ ๋ฐ์๋๋ฐ ๋จ์ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ JavaScript๊ฐ ๋ ์๋ ์๊ณ , ๊ทธ๊ฒ ์คํ ๋ ์ ์๋ค๋ ๊ฒ์ด๋ค. (๋ฐ์ดํฐ์ธ ์ค ์๊ณ ๋ฐ์๋๋ฐ ์ ์ฑ ์คํฌ๋ฆฝํธ๊ฐ ๋ ์ ์๋ค.)
์์ ๊ฐ์ ์ด์ ๋ก ๋ฐ์ ๋ด์ฉ์์ ์์ํ๊ฒ ๋ฐ์ดํฐ๋ง ์ถ์ถํ๊ธฐ ์ํ JSON ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
JSON์ด ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐ์ดํฐ
JSON์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐ์ดํฐ๋ ํด๋น ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ก๋๋ ์๋ฒ์ ๋ฐ์ดํฐ์ ํ์ ๋๋ค.
์๋ฅผ ๋ค์ด, http://kwz.kr/json.js์์ ๋ถ๋ฌ์ฌ ์ ์๋ ๋ฐ์ดํฐ๋ kwz.kr ์๋ฒ์ ์กด์ฌํ๋ ๊ฒ๋ง ๊ฐ๋ฅํ๋ค. (๊ตฌ๊ธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์จ๋ค๊ฑฐ๋ ๋ค์ด๋ฒ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์จ๋ค๊ฑฐ๋ ํ ์ ์๋ค.)
JSON์ ๋จ์ํ ๋ฐ์ดํฐ ํฌ๋งท์ผ ๋ฟ์ด๋ฉฐ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด์ XMLHttpRequest()๋ผ๋ JavaScript ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ ์ด ํจ์๊ฐ ๋์ผ ์๋ฒ์ ๋ํ ๊ฒ๋ง ์ง์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ( JSONP ๋๋ ํ๋ฝ์ ์ญํ ์ ํ๋ ์๋ฒ์ชฝ Script ํ์ผ๋ก ๊ฐ๋ฅํ๊ฒ๋ ํ ์ ์๋ค.)
JSON ํ์ ํ ์คํธ๋ฅผ JavaScript Object๋ก ๋ณํํ๊ธฐ
var jsonText = '{ "name": "Someone else", "lastName": "Kim" }'; // JSON ํ์์ ๋ฌธ์์ด
var realObject = JSON.parse(jsonText);
var jsonText2 = JSON.stringify(realObject);
console.log(realObject);
console.log(jsonText2);
- JSON.parse( JSON ํ์์ ๋ฌธ์์ด ) : JSON ํ์์ ํ ์คํธ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ๋ณํํ๋ค.
- JSON.stringify( JSON ํ์์ ๋ฌธ์์ด๋ก ๋ณํํ ๊ฐ ) : ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ JSON ํ ์คํธ๋ก ๋ณํํ๋ค.
๐JSON์ ๊ตฌ์กฐ
*์ฌ์ฉ ์ด์ ๋โ
โ๏ธJSON ์ ๋ชฉ์ ์ ์ด๊ธฐ์ข ๊ฐ์ ๋ฐ์ดํฐ ๊ตํ์ด๋ค.
์ฑ <-> ์๋ฒ || ์๋ฐ <-> ์๋ฐ์คํฌ๋ฆฝํธ
๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํต์ ์ ๋ฐ์ดํฐ๋ฅผ Byte ํํ๋ก ์ ๋ฌํ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ JSON์ด ์์ด๋ ๋ฐ์ดํฐ ํต์ ์ด ๊ฐ๋ฅํ๋ ์ฐ๋ฆฌ๋ ๊ณผ์ฐ ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊นโ
ํผ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ๊ฐ๋ฐํ๋ค๋ฉด, ์์ ์ด ์ ์ํ ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ค.
BUT?! ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ํ์ ํ๋ค๋ฉด ์์ ์ ๋ฐ์ดํฐ ํ์์ ์๋์๊ฒ ์๋ ค์ค์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค.
โ๏ธ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, JSON, XML๊ณผ ๊ฐ์ ๊ณต์ ๋ฐ์ดํฐ ํฌ๋ฉง์ ์ฌ์ฉํ๋ฉด ๋๊ตฌ๋ ์์ง ๋ฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
โ๏ธJSON์ ํน์ ์ธ์ด์ ์ข ์๋์ง ์๋๋ค.
โ๏ธXML ๋ณด๋ค ๊ฐ๋ณ๊ธฐ ๋๋ฌธ์ ์ต์ํ์ ์ฉ๋์ผ๋ก ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค.
(XML์ HTML๊ฐ์ ๋ํฌ ๊ตฌ์กฐ์ด๊ธฐ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ง์ด ํํํ ์๋ก ๋ณต์กํด์ง๊ณ ์ฉ๋์ด ์ปค์ง)
โ๏ธ๊ตฌ์กฐ ์ ์์ ํธ๋ฆฌ๊ณผ ๊ฐ๋ ์ฑ์ด ๋ฐ์ด๋จ
'Project๐ธ > ๊ฐ๋ฐ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Axios๋? / Axios ์ฌ์ฉ ๋ฐ ์๋ฒ ํต์ ํด๋ณด๊ธฐ! (0) | 2023.05.20 |
---|---|
[๋ฉด์ ์ง๋ฌธโ๏ธ] Controller, Service, Repository ๊ฐ ๋ฌด์์ผ๊น? (0) | 2023.05.18 |
[Spring Boot๐ฑ] ์คํ๋ง๋ถํธ annotation ์ ๋ฆฌ (0) | 2023.05.18 |
[Spring๐ฑ] @Controller์ @RestController ์ฐจ์ด (0) | 2023.05.18 |
[๋คํธ์ํฌ] Get์ ๋ฌด์์ด๊ณ Post๋ ๋ฌด์์ธ๊ฐ? (0) | 2023.05.17 |