728x90
JSON.stringify( ) / JSON.parse( )
JSON.stringify( )
⸰ JavaScript 객체를 JSON 형식의 문자열로 변환
⸰ JavaScript 객체를 서버로 전송하거나, 로컬 저장소에 저장하기 위해 필요한 작업 > 데이터를 일관된 형식으로 전송 가능
형식
JSON.stringify(value, replacer, space)
⸰value
(필수) : JSON 문자열로 변환할 값, 배열 / 객체 / 숫자 / 문자 등 가능
⸰replacer
(선택) : null이거나 없으면, 객체의 모든 속성이 JSON 문자열 결과에 포함, 함수 / 배열 가능
⸰space
(선택) : 출력에 공백을 삽입, string / number 가능
replacer가 함수인 경우
⸰ 문자열로 바뀌는 프로세스의 작동을 변경하는 함수로 사용 가능
⸰ 문자열이 될 key, value 를 매개변수로 받음
function replacer(key, value) {
return (typeof value === 'string' ? undefined : value);
}
let foo = {name: 'ye', nickname: 'hyun', weight: 5};
let useJson = JSON.stringify(foo, replacer);
console.log(useJson) // {"weight":5}
‣ value가 replacer 함수를 한 번 거치고, 문자열로 바뀜
replacer가 배열인 경우
⸰ 배열의 값과 일치하는 값만 문자열로 바뀜
const foo = {name: 'ye', nickname: 'hyun', weight: 5};
const useJson = JSON.stringify(foo, ['nickname', 'weight']);
console.log(useJson); // {"nickname":"ball","weight":5}
space가 string인 경우
⸰ 입력한 문자열이 공백으로 사용
const space = JSON.stringify({a: 2}, null, 'abc');
console.log(space);
/*
{
abc"a": 2
}
*/
space가 number인 경우
⸰ 입력한 숫자만큼 공백이 생김
const space = JSON.stringify({a: 2}, null, 5);
console.log(space);
/*
{
“a”: 2
}
*/
const user = {
name: 'ye',
nickname: 'hyun',
body: {
weight: 5,
hight: 10
}
};
const two = JSON.stringify(user, null, 2);
const four = JSON.stringify(user, null, 4);
console.log(two);
/*
{
"name": "ye",
"nickname": "hyun",
"body": {
"weight": 5,
"hight": 10
}
}
*/
console.log(four);
/*
{
"name": "ye",
"nickname": "hyun",
"body": {
"weight": 5,
"hight": 10
}
}
*/
JSON.stringify( )
⸰ 서버에서 받은 문자열 형태의 데이터를 JavaScript 객체로 변환
형식
JSON.parse(string, [reviver]);
⸰string
: JSON 형태의 문자열
⸰reviver
: 모든 key, value 쌍을 대상으로 호출되는 function(key, value) 형태의 함수로 값 변경 가능
reviver
const str = '{"title": "Conference", "date":"2024-07-18-30T12:00:00.000Z"}';
// const meetup = JSON.parse(str);
// console.log(meetup.date.getDate()); Date 객체가 아니고 문자열이므로 ERROR
const meetup = JSON.parse(str, function(key, value) {
return (key == 'date' ? new Date(value) : value);
});
console.log(meet.up.date.getDate()); // 18
728x90
'💠프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[심화] 이벤트를 발생시키는 EventEmitter (0) | 2024.07.25 |
---|---|
[심화] 불변성 / 참조 투명성에 대해 알아보자 (0) | 2024.07.24 |
[심화] 전역변수도 매개변수로 하는 이유는 무엇일까? (0) | 2024.07.15 |
[심화] 사용자에게 입력 받는 방법 구현하기 (0) | 2024.07.11 |
[심화] Stack / Queue JS로 구현하기 (0) | 2024.07.11 |