JSON.stringify

이동국·2022년 10월 22일
0

이번 시간에는 실제로 재귀가 사용하는 코드를 직접 구현해보면서 재귀의 실사용 예시도 알아보고 재귀로 문제를 해결하는 방법을 좀 더 익혀보았다.

JSON.stringify

객체를 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.parse

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의 기본 규칙

JSON.stringify sprint

위 내용과 전에 배웠던 내용을 생각해서 재귀를 이용해 메서드 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}}`
  }

};

0개의 댓글