JavaScript

JS | JSON(객체표기법)

개발 공부 2022. 12. 29. 10:44

다른 서버와 데이터를 주고받는 일을 할 수 있다. 네트워크는 json을 모른다.

데이터는 주고 받을 때 자바스크립트 객체 형태로 주고 받을 수 없고 문자열 형태로 주고 받을 수 있다.

( json형식을 띄고 있는 ) 문자열의 형태로 형변환해서 데이터를 보내주어야한다.

문자열 타입이 넘어오는(받아오는) 데이터는 객체 타입으로 다시 형변환해서 받아야한다.

 

데이터 타입을 문자열로 형변환 하는 함수

JSON.stringify(data);

 

문자열을 제이슨으로 형변환 하는 함수

단, 이 경우는 엄격한 형식을 지킨다. (키,값이 전부 " "로 묶여야한다.)

JSON.parse(문자열);

 

 var data = [
            {id:'aaa123', title:'aaa',content:'a...'},
            {id:'aaa123', title:'bbb',content:'b...'},
            {id:'aaa123', title:'ccc',content:'c...'},//마지막에 ,콤마가 들어가도 허용됨
        ];

        // console.log(typeof(data));
        // console.log(data);

        //JS객체를 JSON문자열로 형변환
        var str = JSON.stringify(data);
        console.log(str);
        //[{"id":"aaa123","title":"aaa","content":"a..."},{"id":"aaa123","title":"bbb","content":"b..."},{"id":"aaa123","title":"ccc","content":"c..."}]

        //JSON문자열을 JS객체로 형변환
        var obj = JSON.parse(str);
        console.log(obj);
        /*0:{id: 'aaa123', title: 'aaa', content: 'a...'}
          1:{id: 'aaa123', title: 'bbb', content: 'b...'}
          2:{id: 'aaa123', title: 'ccc', content: 'c...'}
          length:3
          [[Prototype]]:Array(0)*/

        //단, 문자열을 객체로 변경할 떄는 엄격한 규칙이 있습니다.
        //key, value가 ""쌍따옴표로 처리여야 합니다.
        //JSON.parse("{id:'aaa123'}"); //err
        var result = JSON.parse('{"id":"aaa123"}');
        console.log(result);