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 문자열 결과에 포함된다.

 

반응형

+ Recent posts