serialization
을 쓴다.serialization은 직렬화라고 하는데
TODO: 좀 더 정리하기
serialize와 deserialize방법을 중점적으로 배우면 됨
오버로딩
함수의 이름은 동일하지만, 파라미터에 따라 다른 방식으로 호출이 가능한 방식
let json = JSON.stringify(true);
console.log(json);
json = JSON.stringify("apple")
console.log(json);
json = JSON.stringify(123)
console.log(json);
const rabbit = {
name: 'tory',
color: 'white',
size: null,
birthDate: new Date(),
jump: () => {
console.log(`${this.name} can jump!`)
},
symbol: Symbol('id')
}
json = JSON.stringify(rabbit);
console.log(json)
{"name":"tory","color":"white","size":null,"birthDate":"2021-02-22T03:32:07.377Z"}
reviver
를 통해 JSON을 문자열로 만들 때 몇 가지 설정을 할 수 있다.json = JSON.stringify(rabbit, (key, value) => {
console.log(`key: ${key}, value: ${value}`)
return key === 'name' ? 'Ellie' : value;
});
console.log(json)
{"name":"Ellie","color":"white","size":null,"birthDate":"2021-02-22T05:12:01.584Z"}
json = JSON.stringify(rabbit, ['name']); // 원하는 propery만 출력 가능
console.log(json)
{"name":"tory"}
replacer
콜백 함수를 통해 설정 할 수 있다.let obj = JSON.parse(json);
console.log(obj)
{name: "tory", color: "white", size: null, birthDate: "2021-02-22T05:15:25.028Z"}
const obj = JSON.parse(json, (key, value) => {
console.log(`key: ${key}, value: ${value}`)
if (key === 'name' ) value = 'jongho'
return key === 'birthDate' ? new Date(value) : value;
})
name
일 때, birthDate
일 때 두번 변경했다.{name: "jongho", color: "white", size: null, birthDate: Mon Feb 22 2021 14:12:01 GMT+0900 (대한민국 표준시)}