[JavaScript]JSON(JavaScript Object Notation)์ด๋?
๐JSON์ด๋?
Javascript ๊ฐ์ฒด ๋ฌธ๋ฒ์ผ๋ก ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ ์ํ ๋ฌธ์ ๊ธฐ๋ฐ์ ํ์ค ํฌ๋งท.
์น ์ดํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฌ์ฉ(์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ํํํ๋ ค๊ฑฐ๋ ๋ฐ๋์ ๊ฒฝ์ฐ).
๐JSON๊ตฌ์กฐ
JSON์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด ํ๊ธฐ๋ฒ์ผ๋ก๋ถํฐ ํ์๋ ๋ถ๋ถ ์งํฉ.
๋ฐ๋ผ์ JSON ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ํ๊ธฐ๋ฒ์ ๋ฐ๋ฅธ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ.
- ์ด๋ฆ๊ณผ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง
- ์ผํ(,)๋ก ๋์ด๋จ
- ๊ฐ์ฒด(object)๋ ์ค๊ดํธ({})๋ก ๋๋ฌ์์ ํํ
- ๋ฐฐ์ด(array)์ ๋๊ดํธ([])๋ก ๋๋ฌ์์ ํํ
๐JSON ๋ฐ์ดํฐ
- JSON ๋ฐ์ดํฐ๋ ์ด๋ฆ๊ณผ ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑ
์ด๋ฌํ JSON ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ์ด๋ฆ, ์ฝ๋ก (:), ๊ฐ์ ์์๋ก ๊ตฌ์ฑ.
⇒ "๋ฐ์ดํฐ์ด๋ฆ": ๊ฐ - ex)๋ฐ์ดํฐ์ ์ด๋ฆ์ด "name"์ด๊ณ , ๊ฐ์ "์๋นต"์ด๋ผ๋ ๋ฌธ์์ด์ ๊ฐ๋ JSON ๋ฐ์ดํฐ.
⇒ "name": "์๋นต” - ๋ฐ์ดํฐ์ ์ด๋ฆ์ ๋ฌธ์์ด์ด๋ฏ๋ก, ํฐ๋ฐ์ดํ("")์ ํจ๊ป ์ ๋ ฅํด์ผํจ.
๐JSON ๋ฐ์ดํฐ์ ํ์ (datatype)
๋ฐ์ดํฐ์ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ค์ํ ํ์ ์ ์ ๊ณต
- ์ซ์(number)
- ๋ฌธ์์ด(string)
- ๋ถ๋ฆฌ์ธ(boolean)
- ๊ฐ์ฒด(object)
- ๋ฐฐ์ด(array)
- null
๋ํ๋ผ ์ ์๋ ์ซ์์ ์ข ๋ฅ
- ์ ์(integer)
- ์ค์(fraction)
- ์ง์(exponent)
*8์ง์๋ 16์ง์ ๋ฑ์ ํํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตX
๐JSON ๊ฐ์ฒด
JSON ๊ฐ์ฒด๋ ์ค๊ดํธ({})๋ก ๋๋ฌ์์ ํํ.
๋ํ, ์ผํ(,)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ๋กํผํฐ๋ฅผ ํฌํจํ ์ ์์.
{
"name": "์๋นต",
"family": "์ฐ์์ฝ๊ธฐ",
"age": 1,
"weight": 2.14
}
๊ฐ์ฒด(object)
๋ฐ์ดํฐ ์ด๋ฆ๊ณผ ๊ฐ์ ํ ์์ผ๋ก ๊ตฌ์ฑ๋ ํ๋กํผํฐ์ ์ ๋ ฌ๋์ง ์์ ์งํฉ์ ์๋ฏธ.
์ค๊ดํธ({})๋ก ๋๋ฌ์ธ์ฌ ์์.
๊ฐ์ฒด์ ์ ์ฅ๋๋ ํ๋กํผํฐ(property)๋ ๋ฐ์ดํฐ ์ด๋ฆ๊ณผ ๊ฐ์ ํ ์์ผ๋ก ์ด๋ฃจ์ด์ง.
์ผํ(,)๋ฅผ ์ฌ์ฉํ์ฌ ํ๋กํผํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ ๊ฐ์ง ์ ์์. ์ด๋ ํ๋กํผํฐ์ ์์๋ ์ค์ํ์ง ์์ผ๋ฉฐ, ๋ฐ์ดํฐ์ ์ด๋ฆ์ ๋ฌธ์์ด๋ก ๋ฐ๋์ ํฐ๋ฐ์ดํ("")๋ฅผ ์ฌ์ฉํจ.
๊ฐ์ฒด ์์ ๊ฐ์ฒด
๋ฐ์ดํฐ ์ด๋ฆ๊ณผ ๋์๋๋ ๊ฐ์ผ๋ก ์ซ์, ๋ฌธ์์ด, ๋ถ๋ฆฌ์ธ๋ฟ๋ง ์๋๋ผ ๋ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ์ฌ ์ ์์. ๋ง์ฝ ๋ฐ์ดํฐ์ ๊ฐ์ด ๊ฐ์ฒด๋ผ๋ฉด ๊ฐ์ฒด ์์ ๊ฐ์ฒด๊ฐ ํฌํจ๋๋ ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ํ์ฑ๋จ.
ex)๊ฐ์ฅ ์์ ๊ณ์ธต์ ๋ฐ์ดํฐ ์ด๋ฆ์ "dog", ๋ฐ์ดํฐ๊ฐ์ผ๋ก ๋ค์ฏ ๊ฐ์ ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง.
"owner" ๊ฐ์ฒด๋ "ownerName"๊ณผ "phone"์ด๋ผ๋ ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง.
{
"dog": {
"name": "์๋นต",
"family": "์ฐ์์ฝ๊ธฐ",
"age": 1,
"weight": 2.14,
"owner": {
"ownerName": "ํ๊ธธ๋",
"phone": "01012345678"
}
}
}
๐JSON ๋ฐฐ์ด
JSON ๋ฐฐ์ด์ ๋๊ดํธ([])๋ก ๋๋ฌ์์ ํํ.
๋ํ, ์ผํ(,)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ JSON ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์์.
ex)๋ฐฐ์ด์ ์ด๋ฆ์ด "dog"์ด๊ณ , 3๊ฐ์ JSON ๊ฐ์ฒด๋ฅผ ์์๋ก ๊ฐ์ง๋ JSON ๋ฐฐ์ด.
"dog": [
{"name": "์๋นต", "family": "์ฐ์์ฝ๊ธฐ", "age": 1, "weight": 2.14},
{"name": "์ฝฉ์ฝฉ", "family": "ํฌ๋ฉ๋ผ๋์", "age": 3, "weight": 2.5},
{"name": "์ ค๋ฆฌ", "family": "ํธ๋ค", "age": 7, "weight": 3.1}
]
๐๋ฉ์๋
JSON
๊ฐ์ฒด๋ JSON์ ๋ถ์ํ๊ฑฐ๋ ๊ฐ์ JSON์ผ๋ก ๋ณํํ๋ ๋ฉ์๋๊ฐ ์์.
[JSON.parse()]
๋ฌธ์์ด์ JSON์ผ๋ก์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ , ์ ํ์ ์ผ๋ก ๋ถ์ ๊ฒฐ๊ณผ์ ๊ฐ๊ณผ ์์ฑ์ ๋ณํํด ๋ฐํํจ.
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);
console.log(obj.count);
// expected output: 42
console.log(obj.result);
// expected output: true
๊ฒฐ๊ณผ
42
true
[JSON.stringify()]
์ฃผ์ด์ง ๊ฐ์ ํด๋นํ๋ JSON ๋ฌธ์์ด์ ๋ฐํํจ. ์ ํ ์ฌํญ์ผ๋ก ํน์ ์์ฑ๋ง ํฌํจํ๊ฑฐ๋ ์ฌ์ฉ์ ์ ์ ๋ฐฉ์์ผ๋ก ์์ฑ์ ๋์ฒดํจ.
console.log(JSON.stringify({ x: 5, y: 6 }));
// expected output: "{"x":5,"y":6}"
console.log(JSON.stringify([new Number(3), new String('false'), new Boolean(false)]));
// expected output: "[3,"false",false]"
console.log(JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }));
// expected output: "{"x":[10,null,null,null]}"
console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// expected output: ""2006-01-02T15:04:05.000Z""
๊ฒฐ๊ณผ
'{"x":5,"y":6}'
'[3,"false",false]'
'{"x":[10,null,null,null]}'
'"2006-01-02T06:04:05.000Z"'
์ฐธ์กฐ
http://www.tcpschool.com/json/json_basic_structure
https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON