JSON.parse, JSON.stringify
JSON
JSON은 객체, 배열, 숫자 ,문자열, boolean, null을 '직렬화'하기 위한 구문으로, JavaScript 구문에 기반을 두고 있지만 분명한 차이가 있다. 즉 JavaScript는 JSON이 아니다.
1. 객체와 배열
속성의 이름은 반드시 '큰따옴표'로 표시한 문자열이어야 한다.
2.숫자
선행 0은 허용하지 않는다. 소숫점 뒤에는 적어도 한 자릿수가 있어야한다. Nan과 infinity는 지원하지 않는다.
3. JSON.parse()
문자열을 JSON으로서 구문 분석하고, 선택적으로 분석 결과의 값과 속성을 변환해 반환한다.
사용법
JSON.parse(text[, reviver])
매개변수
text : JSON으로 변환할 문자열
reviver : 함수라면, 변환 결과를 반환하기 전에 이 인수에 전달해 변형함.
반환값
주어진 JSON 문자열에 대응하는 Object(객체)
예외(오류)
변환할 문자열이 유효한 JSON이 아닐 경우 SyntaxError
const json = '{"result" : true, "count" : 42}';
const obj = JSON.parse(json);
console.log(obj.count); // output : 42
console.log(obj.result); // output : true
console.log(obj); //Object { result: true, count: 42 }
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"bamm"'); // "bamm"
JSON.parse('[1, 3, "false"]'); // [1, 3, "false"]
JSON.parse('null'); // null
4. JSON.stringify()
주어진 값(JavaScript 값이나 객체)에 해당하는 JSON문자열을 반환한다. 선택 사항으로 특정 속성만 포함하거나 사용자 정의방식으로 속성을 대체한다.
console.log(JSON.stringify({ x: 5, y: 6 }));
// expected output: "{"x":5,"y":6}"
console.log(JSON.stringify([new Number(3), new String('false'), new Boolean(false)]));
// expected output: "[3,"false",false]"
console.log(JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }));
// expected output: "{"x":[10,null,null,null]}"
console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// expected output: ""2006-01-02T15:04:05.000Z""
사용법
JSON.stringify(value[, replacer[, space]])
매개변수
value : JSON 문자열로 변환할 값
replacer : 문자열화 동작 방식을 변경하는 함수, 혹은 JSON 문자열에 포함될 값 객체의 속성들을 선택하기 위한 화이트리스트(whitelist)로 쓰이는 String 과 Number 객체들의 배열. 이 값이 null 이거나 제공되지 않으면, 객체의 모든 속성들이 JSON 문자열 결과에 포함된다.
'JavaScript' 카테고리의 다른 글
[JavaScript] Numbers API를 이용한 프로젝트 - AJAX, Fetch (0) | 2020.08.10 |
---|---|
[JavaScript] AJAX 란 무엇인가? (0) | 2020.07.17 |
[JavaScript] Event - addEventListener, 이벤트 객체 (0) | 2020.05.14 |
[JavaScript] 함수 (0) | 2020.05.13 |
Javascript 기초 문법 - 변수, 연산자, 타입 (0) | 2020.04.17 |