JSON.stringify()
key, value
모두 " " 가 붙음.const rabbit = {
name: 'tori',
color: 'white',
size: 'null',
birthDate: new Date(),
jump: () => {
console.log(`${name} can jump!`);
}
}
let json = JSON.stringify(rabbit);
console.log(json);
////{"name":"kim","color":"white","size":"null","birthDate":"2020-12-19T11:03:07.200Z"}
위 코드에서 jump()는 JSON 문자열로 변경될 때 포함되지 않는다.
JSON.stringify()
는 두 번째 인자로 함수나 배열을 받을 수 있다.
let json = JSON.stringify(rabbit, (key, value) => {
return key === 'name' ? 'kim' : value;
// JSON으로 변경할 때 key값이 name 이라면 value를 'kim'으로 변경, 나머지는 기존의 value를 그대로 변경
})
let json = JSON.stringify(rabbit, ['name', 'color']);
console.log(json);// {"name":"tori","color":"white"};
JSON.parse()
let obj = JSON.parse(json);
console.log(obj);
//{name: "tori", color: "white", size: "null", birthDate: "2020-12-19T11:31:45.807Z"}
birthDate
는 JSON.stringify()
를 했을 때 Date 객체에서 얻은 문자열을 가져온다. 이를 방지하기 위해선 아래 코드처럼 작성을 해야한다.let obj = JSON.parse(json, (key, value) => {
return key === 'birthDate' ? new Date(value) : value;
// JSON에서 가져오는 key값이 'birthDate'인 경우 new Date(value)로 새로 생성, birthDate 이외의 경우 기존 value값을 가져온다.
})