JSON은 JavaScript Object Notation의 약자로, 데이터를 저장하거나 전송할 때 사용되는 경량의 데이터 형식이다. JSON은 텍스트 형태로 존재하며, JavaScript에서는 JSON.stringify()
와 JSON.parse()
함수를 사용하여 JSON과 객체 간의 변환을 쉽게 수행할 수 있다.
JSON.stringify()
함수를 사용하면 JavaScript 객체를 JSON 문자열로 변환할 수 있다.
let json = JSON.stringify(true);
console.log(json); // true
json = JSON.stringify(['apple', 'banana']);
console.log(json); // ["apple","banana"]
const rabbit = {
name: 'tori',
color: 'white',
size: null,
birthDate: new Date(),
jump: function () {
console.log(`${this.name} can jump!`);
},
};
json = JSON.stringify(rabbit);
console.log(json); // {"name":"tori","color":"white","size":null,"birthDate":"2021-01-18T12:37:04.091Z"}
// 필터링된 속성으로 JSON 생성
json = JSON.stringify(rabbit, ['name', 'color', 'size']);
console.log(json); // {"name":"tori","color":"white","size":null}
// 콜백 함수를 이용한 세밀한 변환
json = JSON.stringify(rabbit, (key, value) => {
return key === 'name' ? 'ellie' : value;
});
console.log(json); // {"name":"ellie","color":"white","size":null,"birthDate":"2021-01-18T12:37:04.091Z"}
JSON.parse()
함수를 사용하면 JSON 문자열을 JavaScript 객체로 변환할 수 있다.
json = JSON.stringify(rabbit);
console.log(json);
const obj = JSON.parse(json, (key, value) => {
console.log(`key: ${key}, value: ${value}`);
return key === 'birthDate' ? new Date(value) : value;
});
console.log(obj);
rabbit.jump();
// obj.jump(); // jump 메서드는 JSON으로 변환되지 않았기 때문에 에러가 발생한다.
console.log(rabbit.birthDate.getDate()); // 18 (오늘 날짜)
console.log(obj.birthDate.getDate()); // 18 (오늘 날짜)![](https://velog.velcdn.com/images/geon8692/post/f58ae257-b66a-4cc7-8369-78749c792b26/image.png)