1 minute read

JSON 과 메서드

복잡한 복합 자료 구조를 네트워크를 통해 내보내거나 로깅 목적으로 출력할 때 객체를 문자열로 전환 필요

중첩 자료 구조 까지 변경하기 어려움

  • JSON

    값이나 객체를 나타내주는 범용 포맷(문자열)

    데이터 교환 목적으로 사용하는 경우 많음

    서버측 언어는 무엇이든 상관 없음

    주석 지원하지 않음(쉽고 빠르고 신뢰할 수 있을 만한 파싱 알고리즘 구현하기 위함)

    • 메서드

      JSON.stringify

      JSON.parse

  • JSON.stringify

    JSON.stringify(value[, replacer, space])

    • value

      인코딩 하려는 값

    • replacer

      JSON 으로 인코딩 하길 원하는 프로퍼티가 담긴 배열. 또는 매핑함수 function(key, value)

    • space

      서식 변경 목적으로 사용할 공백 문자 수

    객체를 JSON 으로 바꿔줌

    거쳐서 변경된 문자열을 JSON 으로 인코딩된, 직렬화 처리된, 문자열로 변환된, 결집된 객체 라고 부름

    원시값에도 적용 가능

    • 일반 객체와 다른 특징

      1. 문자열은 반드시 큰 따옴표로 감싸야 함

      2. 객체 프로퍼티 이름은 큰 따옴표로 감싸야 함

    • 적용할 수 있는 자료형

      객체, 배열, 원시형(문자형, 숫자형, 불린형, null)

    • 호출 시 무시되는 프로퍼티

      1. 함수 프로퍼티 (메서드)

      2. 심볼형 프로퍼티 (키가 심볼인 프로퍼티)

      3. 값이 undefined 인 프로퍼티

    • 중첩 객체

      알아서 문자열로 변환시켜 줌

    • 순환 참조

      순환 참조 있을 시 원하는대로 문자열로 바꾸는게 불가능

    • replacer

      순환 참조 다뤄는 거와 같이 정환 프로세스 정교하게 조정하려할 때 사용

      • 배열

        이 프로퍼티들만 JSON 으로 인코딩.

      • 함수

        프로퍼티 (키, 값) 쌍 전체 대상으로 호출되며 반드시 기존 프로퍼티 값을 대신 사용할 값 반환 필요.

        중첩 객체와 배열 요소까지 포함한 모든 키-값 쌍 처리

        함수 내 this 는 현재 처리하고 있는 프로퍼티가 위치한 객체

    • space

      가독성을 높이기 위해 중간에 삽입해줄 공백 문자 수

      숫자 만큼 들여쓰기 해줌.

    • 커스텀 “toJSON”

      객체에 메서드 구현되어 있으면 객체 JSON으로 바꿀 수 있음

      JSON.stringify 는 객체내에 toJSON 자동으로 호출

      중첩 객체도 구현하여 사용 가능

  • JSON.parse

    JSON 으로 인코딩된 객체 다시 객체로 디코딩 가능

    JSON.parse(str, [reviver])

    중첩 객체에도 사용 가능

    • str

      JSON 형식의 문자열

    • reviver

      모든 (key, value) 쌍 대상으로 호출되는 function(key, value) 형태의 함수로 값 변형 가능

      원하는 값만 읽거나 쓰기 가능

요약

  • JSON 은 값이나 객체를 나타내주는 범용 포맷으로 복잡한 자료구조를 네트워크를 통해 내보내거나 로깅 목적으로 출력할 때 문자열이 필요한 상황을 만족시키기 위해 나옴

  • JSON.stringify 는 원하는 값 JSON 으로 직렬화

  • JSON.stringify 는 객체에 toJSON 메서드가 있다면 우선 실행

  • JSON.parse 는 JSON 을 본래 값으로 변경 가능

  • stringify, parse 는 두번째 인수에 함수(replacer) 넘겨서 원하는 값만 읽거나 쓰기 가능

  • 객체에 toJSON 이라는 메서드 구현되어 있을 시 JSON.stringify 는 자동으로 toJSON 호출

Categories: ,

Updated: