JSON์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ HTTP ํต์ ์ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ข ์๋์ง์์ ํ ์คํธ ๋ฐ์ดํฐ ํฌ๋งท์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด์ ์ ์ฌํ๊ฒ ํค์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ ์์ํ ํ ์คํธ๋ค.
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ํต์
- json์์ string ํ์์ผ๋ก ๋ด๋ณด๋ด๋ฉฐ, ๋ธ๋ผ์ฐ์ ์์ string ํ์ ์ ๋ฐ์์,
๋ค์ ์ค๋ธ์ ํธ๋ก ๋ณํํ์ฌ ๋ณด์ฌ์ค๋ค.
serialize: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๊ฐ์ฒด๋ฅผ ์ ์กํ๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ดํํด์ผ ํ๋๋ฐ ์ด๋ฅผ ์ง๋ ฌํ๋ผ๊ณ ํ๋ค.
deserialize: ์๋ฒ๋ก๋ถํฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก๋ ๋ฐ์ดํฐ๋ ๋ฌธ์์ด์ด๋ค. ์ด ๋ฌธ์์ด์ ๊ฐ์ฒด๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ฌธ์์ด์ ๊ฐ์ฒดํ ํด์ผํ๋๋ฐ ์ด๋ฅผ ์ญ์ง๋ ฌํ๋ผ๊ณ ํ๋ค.
json ๊ฐ์ฒด๋ฅผ String๋ก ๋ณํํ๋ค.
const rabbit = {
name: 'tori',
color: 'white',
size: 'null',
brithDate : new Date(),
jump: ()=> {
console.log(`${name} can jump!`);
},
};
json = JSON.stringify(rabbit);
console.log(json);
/* {\"name\":\"tori\",\"color\":\"white\",\"size\":\"null\",\"brithDate\":\"2022-02-13T14:35:35.521Z\"}*/
โ ํ ๋ผ ๊ฐ์ฒด์์ ์ด๋ฆ๋ง json์ผ๋ก ํ๊ณ ์ถ๋ค๋ฉด?
json = JSON.stringify(rabbit, ['name']);
console.log(json);
/*{\"name\":\"tori\"}*/
โ ์ฝ๋ฐฑํจ์ ์ฌ์ฉ
json = JSON.stringify(rabbit, (key, value)=>{
console.log(`key: ${key}, value: ${value}`);
return value;
});
console.log(json);
๋ชจ๋ ํค์ ๊ฐ๋ค์ด ์ฝ๋ฐฑํจ์์ ์ ๋ฌ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ํน์ดํ ์ ์ ์ฒซ๋ฒ์งธ๋ก ์ ๋ฌ๋๋ ๊ฒ์ ํ ๋ผ ๊ฐ์ฒด๋ฅผ ๊ฐ์ธ๊ณ ์๋ ์ ์ผ ์ต์์ ๊ฒ์ด ์ ๋ฌ๋๋ค. ๊ทธ ๋ค๋ถํฐ ํค์ ๊ฐ๋ค์ด ์ ๋ฌ๋๋ค.
json = JSON.stringify(rabbit, (key, value)=>{
return key === 'name' ? 'ellie' : value ;
// key ๊ฐ name ์ผ๋ value๋ฅผ ellie๋ก ์ค์ ํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ์๋ value๋ก ๋ฐํํ๋ค.
});
console.log(json);
json ๊ฐ์ฒด๋ฅผ json ๊ฐ์ฒด๋ก ๋ณํํ๋ค.
json = JSON.stringify(rabbit);
const obj = JSON.parse(json);
console.log(obj);
String์ผ๋ก ๋ง๋ค์ด์ง json์ผ๋ก๋ถํฐ ๋ค์ ์ค๋ธ์ ํธ๋ก ๋ง๋ค ๊ฒฝ์ฐ์๋ ์๋ ๊ฐ์ฒด์์ ํฌํจ๋์ด ์๋ ํจ์๋ ํฌํจ๋์ง ์๋๋ค.
โ stringify ๋ฉ์๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฝ๋ฐฑํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค!
json = JSON.stringify(rabbit);
const obj = JSON.parse(json, (key, value)=>{
console.log(`key: ${key}, value: ${value}`);
return value;
});
๋๋ฆผ์ฝ๋ฉ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ฑํ์์ต๋๋ค.