JSON 과 메서드
JSON 과 메서드
복잡한 복합 자료 구조를 네트워크를 통해 내보내거나 로깅 목적으로 출력할 때 객체를 문자열로 전환 필요
중첩 자료 구조 까지 변경하기 어려움
- 
    JSON 값이나 객체를 나타내주는 범용 포맷(문자열) 데이터 교환 목적으로 사용하는 경우 많음 서버측 언어는 무엇이든 상관 없음 주석 지원하지 않음(쉽고 빠르고 신뢰할 수 있을 만한 파싱 알고리즘 구현하기 위함) - 
        메서드 JSON.stringify JSON.parse 
 
- 
        
- 
    JSON.stringify JSON.stringify(value[, replacer, space])- 
        value 인코딩 하려는 값 
- 
        replacer JSON 으로 인코딩 하길 원하는 프로퍼티가 담긴 배열. 또는 매핑함수 function(key, value) 
- 
        space 서식 변경 목적으로 사용할 공백 문자 수 
 객체를 JSON 으로 바꿔줌 거쳐서 변경된 문자열을 JSON 으로 인코딩된, 직렬화 처리된, 문자열로 변환된, 결집된 객체 라고 부름 원시값에도 적용 가능 - 
        일반 객체와 다른 특징 - 
            문자열은 반드시 큰 따옴표로 감싸야 함 
- 
            객체 프로퍼티 이름은 큰 따옴표로 감싸야 함 
 
- 
            
- 
        적용할 수 있는 자료형 객체, 배열, 원시형(문자형, 숫자형, 불린형, null) 
- 
        호출 시 무시되는 프로퍼티 - 
            함수 프로퍼티 (메서드) 
- 
            심볼형 프로퍼티 (키가 심볼인 프로퍼티) 
- 
            값이 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 호출