JavaScript #17

날림·2021년 10월 6일

js/node

목록 보기
23/25

StringifyJSON

JSON?

JSON은 JavaScript Object Notation의 줄임말, 데이터 교환을 위해 만들어진 객체 형태의 포맷

문자열이다 - 범용적으로 읽기 위해

JSON은 문자열이기 때문에

  • JSON → 객체 : JSON.parse
  • 객체 → JSON : JSON.stringify

를 사용하여 바꿔준다

JSON 기본 규칙

자바스크립트 객체와 비슷해 보이지만...

키와 문자열 값은 반드시 큰따옴표를 붙여야 함
키와 값 사이, 그리고 키-값 쌍 사이에는 공백이 있어서는 안 된다


JSON.stringify 구현

재귀를 사용한다

자바스크립트 객체와 JSON은 대표적인 트리 구조를 가지고 있으므로, 전형적인 재귀 탐색이 가능한 구조(객체의 값으로 객체를 포함하는 구조)이기 때문

요소의 타입을 확인하여 그에 맞게 리턴
타입이 배열이나 객체라면 요소마다 재귀를 사용
객체의 키값이 undefined, function 이라면 제외

function stringifyJSON(obj) {
  if (typeof(obj) === 'number' || typeof(obj) === 'boolean' || obj === null) return `${obj}`
  if (typeof(obj) === 'string') return `"${obj}"`
  if (Array.isArray(obj)) return `[${obj.map(x => stringifyJSON(x))}]`
  if (typeof(obj) === 'object') return `{${Object.keys(obj).filter(x => !(typeof(obj[x]) === 'undefined' || typeof(obj[x]) === 'function'))
                                                           .map(x => `"${x}":${stringifyJSON(obj[x])}`)}}`
};
profile
항상배우기

0개의 댓글