๊ธ์ ์์ฑํ๊ธฐ์ ์์ ์ด ๊ฒ์๊ธ์ ๋ชจ๋ ๊ธ์ ์ ํ๋ธ ๋๋ฆผ์ฝ๋ฉ by ์๋ฆฌ๋์ ๋์์์ด ์ถ์ฒ์์ ์๋ ค๋๋ฆฝ๋๋ค.
https://www.youtube.com/watch?v=yOdAVDuHUKQ&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=8
JSON
JavaScript Object Notation
JSON ์ด๋ ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ๊ฐ ๋น๋๊ธฐ ํต์ , ์น ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ ๊ตํ ๋ฑ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค ๋ ๋ธ๋ผ์ฐ์ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ฐ์ผ์์ ์๋ฒ์ ์ฃผ๊ณ ๋ฐ์ ๋, ๋๋ ์๋ฒ์ ํต์ ์ ํ์ง ์์๋ ์ค๋ธ์ ํธ๋ฅผ ํ์ผ์์คํ ์ ์ ์ฅํ ๋๋ JSON์ ์ด์ฉํ๋ค!
โ
JSON์ key์ value๋ก ์ด๋ฃจ์ด์ ธ ์๋ค
โ
์ค๋ธ์ ํธ๋ฅผ ์ง๋ ฌํ ( serialize ) ํด์ ์ด๋ป๊ฒ JSON์ผ๋ก ๋ณํํ ์ง,
์ง๋ ฌํ๋ JSON์ ( deserialize ) ํด์ ๋ค์ ์ค๋ธ์ ํธ๋ก ๋ณํํ ์ง๋ฅผ ์ค์ ์ ์ผ๋ก ์์๋ณด์
Object to JSON
์ค๋ธ์ ํธ๋ฅผ JSON์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์
let json = JSON.stringify
์์ฒ๋ผ JSON ์ค๋ธ์ ํธ ์์ ์๋ ๋ ๊ฐ์ง API ์ค์ stringify๋ฅผ ์ด์ฉํ๋ฉด ๋๋ฉด ์ค๋ธ์ ํธ๋ฅผ JSON์ผ๋ก ๋ณํํ ์ ์๋ค
โ
์ด์ ๋ฐฐ์ด์ JSON์ผ๋ก ๋ณํํด๋ณด์
json = JSON.stringify(['apple', 'banana']);
console.log(json);
์์ ๊ฐ์ด apple๊ณผ banana๋ผ๋ ๋ฐฐ์ด์ JSON์ผ๋ก ๋ณํํ๋ฉด
["apple","banana"]
์์ ๊ฐ์ด ๋ณํ์ด ๋๋ค
โ
์ด๋ฒ์๋ ์ค๋ธ์ ํธ๋ฅผ JSON์ผ๋ก ๋ณํํด๋ณด์
const rabbit = {
name: 'tori',
color: 'white',
size: null,
birthDate: new Date(),
jump: () = > {
console.log(`${this.name} can jump!`);
},
};
let json = JSON.stringify(rabbit);
console.log(json);
์์ ๊ฐ์ด rabbit์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค์ด ๋ณด์๋ค ๊ทธ ํ json์ ์ถ๋ ฅํด๋ณด๋ฉด
{"name":"tori","color":"white","size":null,
"birthDate":"2020-09-03T17:08:11 ... "}
์์ ๊ฐ์ด ์ถ๋ ฅ์ด ๋๋๋ฐ jump๋ ์ถ๋ ฅ์ด ์ ๋๋ ๊ฑธ ํ์ธํ ์ ์๋ค
jump๋ ์ค๋ธ์ ํธ์ ์๋ ๋ฐ์ดํฐ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ ์ธ๋๋ ๊ฒ์ด๋ค
โ
๋ JSON์ผ๋ก ๋ณํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ ์๋ ์๋๋ฐ
let json = JSON.stringify(rabbit, ['name', 'color']);
console.log(json);
์์ฒ๋ผ ์ํ๋ ํ๋กํผํฐ๋ง JSON ๋ณํํ๊ฒ ํ ์ ์๋ค'
{"name":"tori","color":"white"}
๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๋ค
let json = JSON.stringify(rabbit, (key, value) => {
console.log(`key: ${key}, value: ${value}`);
return key === 'name' ? 'song' : value;
});
console.log(json);
์์ฒ๋ผ key์ value๋ฅผ ์ ๋ฌ๋ฐ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด
โ
์ฝ์์ rabbit์ key์ value๋ค์ด ์ ๋ฌ์ด ๋๊ณ
return์ key๋ก name์ด ํฌํจ๋๋ฉด 'song'์ผ๋ก ๋ฐ๊พธ๊ณ name์ด ์๋ ๊ฒฝ์ฐ ์๋์ value๋ก ๊ฐ์ ์ ๋ฌํ๊ฒ ๋๋ค
{"name":"song","color":"white","size":null,
"birthDate":"2020-09-03T17:08:11 ... "}
name์ด 'song'์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ์ ์ ์๋ค
JSON to Object
์ด๋ฒ์๋ JSON์ ์ค๋ธ์ ํธ๋ก ๋ณํํ๋ parse์ ๋ํด์ ์์๋ณด์
const rabbit = {
name: 'tori',
color: 'white',
size: null,
birthDate: new Date(),
jump: () = > {
console.log(`${this.name} can jump!`);
},
};
์์๋ฅผ ์ํด ์์์ ๋ง๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ๋ณด๊ธฐ!
let json = JSON.stringify(rabbit);
const obj = JSON.parse(json);
console.log(json);
์ฐ์ json ๋ณ์์ rabbit ์ค๋ธ์ ํธ๋ฅผ JSON์ผ๋ก ๋ณํํด์ ์ ๋ฌํ๋ค
๊ทธ ์ดํ parse๋ฅผ ์ฌ์ฉํด json์ ๋ค์ obj๋ก ๋ณ์๋ก ๋๊ฒจ ์ฃผ๋ฉด์ deserialize ๋์๋ค!
์ถ๋ ฅํด๋ณด๋ฉด
{name:"tori",color:"white",size:null,
birthDate:"2020-09-03T17:08:11 ... "}
์์ฒ๋ผ rabbit ์ค๋ธ์ ํธ๊ฐ ์ถ๋ ฅ์ด ๋๋ค
โ
์ฌ๊ธฐ์ ํฌ์ธํธ !
console.log(rabbit.birthDate.getDate());
console.log(obj.birthDate.getDate());
rabbit ์ birthDate๋ Date() ๋ผ๋ API๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ณ ( ์๋๋ฅผ ์ฐธ๊ณ )
birthDate: new Date()
obj ๋ rabbit์ JSON์ผ๋ก ๋ฌธ์์ด์ ๋๊ฒจ ์ฃผ์๊ธฐ ๋๋ฌธ์ (์๋๋ฅผ ์ฐธ๊ณ )
{"name":"song","color":"white","size":null,
"birthDate":"2020-09-03T17:08:11 ... "}
rabbit์ getDate๋ ์ ์์ ์ผ๋ก ์ถ๋ ฅ์ด ๋์ง๋ง
obj์ getDate๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค
โ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด reviver ์ด๋ผ๋ ์ฝ๋ฐฑํจ์๋ฅผ ์ธ ์ ์๋๋ฐ
let json = JSON.stringify(rabbit);
const obj = JSON.parse(json, (key, value) => {
return key === 'birthDate' ? new Date(value) : value;
});
console.log(json);
์์์ key์ value๋ฅผ ๋ฐ์ ๋ฆฌํด์ ํ๋๋ฐ key์ birthDate ๋ผ๋ key๊ฐ ๋ค์ด์์ ๊ฒฝ์ฐ ์๋ก์ด Date๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค๊ณ key๊ฐ birthDate ๊ฐ ์๋๋ผ๋ฉด ๊ทธ๋๋ก ์๋ ์๋ value ๋ฅผ ์ฐ๋๋ก ํ๋ค
โ
์ด๋ ๊ฒ ํด์ฃผ๊ณ ๋์
console.log(rabbit.birthDate.getDate());
console.log(obj.birthDate.getDate());
๋ค์ ํ๋ฒ ๋๊ฐ์ด getDate ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ๊ฐ์ด ์ ์์ ์ผ๋ก ์ถ๋ ฅ์ด ๋๋ค !
โ
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฑ๊ธ์ค๋ ๋์ง๋ง ๋น๋๊ธฐ๋ก ๋์ํ๋ ์ด์ (0) | 2022.03.11 |
---|---|
๋ธ๋ผ์ฐ์ ๋ ๋๋ง ์๋ฆฌ ( Critical Rendering Path ) (0) | 2021.12.01 |
JavaScript (ES6) - Array APIs ์ด์ ๋ฆฌ - ( ์ ์ฉํ 10๊ฐ์ง ๋ฐฐ์ด ํจ์ ) (0) | 2021.05.23 |
JavaScript (ES6) - Prototype (0) | 2021.05.20 |
JavaScript (ES6) - Array ๊ฐ๋ ๊ณผ APIs (0) | 2021.05.01 |