이번 시간에는 실제로 재귀가 사용하는 코드를 직접 구현해보면서 재귀의 실사용 예시도 알아보고 재귀로 문제를 해결하는 방법을 좀 더 익혀보았다.
객체를 JSON으로 변환한다. stringify하는 이 과정을 직렬화(serialize)한다고 한다.
const message = {
sender: "김",
receiver: "박",
message: "박씨 오늘 저녁 게임 할래?",
createdAt: "2022-02-22"
}
let trMessage = JSON.stringify(message)
console.log(trMessage)
// {"sender":"김","receiver":"박","message":"박씨 오늘 저녁 게임 할래?","createdAt":"2022-02-22"}
console.log(typeof(trMessage))
// string
이처럼 JSON.stringify는 객체를 json으로 변환한다.
JSON을 객체로 변환한다. JSON.parse를 적용하는 이 과정을 역직렬화(deserialize)한다고 한다.
let packet = `{"sender":"김","receiver":"박","message":"박씨 오늘 저녁 게임 할래?","createdAt":"2022-02-22"}`
let obj = JSON.parse(packet)
console.log(obj)
//{sender: '김', receiver: '박', message: '박씨 오늘 저녁 게임 할래?', createdAt: '2022-02-22'}
console.log(typeof(obj))
// object
위 내용과 전에 배웠던 내용을 생각해서 재귀를 이용해 메서드 JSON.stringify를 함수의 형태로 직접 구현해 보았다.
function stringifyJSON(obj) {
// your code goes here
if(typeof obj === 'boolean' || typeof obj === 'number'|| obj === null){
return String(obj)
}
if(typeof obj === 'string'){
return `"${obj}"`
}
if(typeof obj === 'undefined' || typeof obj === 'function'){
return 'undefined'
}
if(Array.isArray(obj)){
let result = [];
for(let list of obj){
result.push(stringifyJSON(list))
}
return `[${result}]`;
}
if(typeof obj === 'object' && obj !== null){
let str = '';
for(let key in obj){
if(typeof obj[key]=== 'function' || obj[key] === 'undefined'){
return "{}"
}
let newkey = stringifyJSON(key)
let newvalue = stringifyJSON(obj[key])
str = str+ newkey + ":" + newvalue+',';
}
str = str.slice(0, -1)
return `{${str}}`
}
};