JavaScript 값과 전송·저장용 JSON 문자열을 변환합니다.
JSON.stringify는 지원되는 JavaScript 값을 JSON 문자열로 만들고 JSON.parse는 문자열을 다시 값으로 해석합니다. JSON은 주석, undefined, 함수, 순환 참조를 표현하지 못하며 날짜도 문자열로 저장됩니다. 외부 JSON은 형식과 필드를 검증한 뒤 사용합니다.
course를 JSON.stringify로 바꾼 text는 객체가 아니라 들여쓰기된 문자열이고, JSON.parse가 그 문자열을 다시 읽어 내용이 같은 새 객체 restored를 만듭니다. 화면에는 먼저 text가 그대로 찍히고, 이어서 restored.title로 읽은 JavaScript가 복원한 제목 줄에 붙습니다. restored는 course와 값만 같을 뿐 별개의 객체라 restored === course는 false입니다.
JSON.stringify의 두 번째 인수에 키 이름 배열을 넘기면 그 속성만 남긴 JSON을 만들 수 있습니다. 반대로 JSON.parse의 두 번째 인수로 함수를 넘기면 키와 값을 하나씩 받아 바꿔 돌려줄 수 있어, 문자열로 저장된 날짜를 new Date로 되살리는 데 씁니다.
JSON.parse는 잘못된 문자열에서 SyntaxError를 던집니다. 외부 입력은 try/catch로 실패를 처리하세요.
직접 바꿔보세요tags 배열을 추가하고 들여쓰기 숫자를 4로 바꾸세요.