TIL23, JSON 구조
프로그래밍 언어는 Javascript, Java, C, C++, C#, Python 등 많은 종류가 있다.
전세계 사람들이 영어라는 공용어를 이용해 국적이 달라도 의사소통을 할 수 있는 것처럼,
프로그래밍 언어가 달라도 범용적으로 읽을 수 있는 형태의 언어가 있다.
그것을 JSON, Javascript Object Notation라고 한다.
JSON은 데이터 교환을 위해 만들어진 것으로써 객체 형태의 포맷이다.
데이터 교환이 가능하려면, 문자열처럼 범용적으로 읽을 수 있는 형태여야 하는데,
Javascript에서 객체를 toString() 또는 String()을 이용해 문자열로 변환하려고 시도하면,
[object Objcet]를 반환할 뿐, 객체 정보를 포함하지 않는다.
그래서 객체를 JSON의 형태로 변환하거나 반대로 JSON을 객체의 형태로 변환해서 범용적으로 만들어준다.
JSON.stringify()
→ 객체 형태를 JSON 형태로 변환한다.
let transObj = JSON.stringify(obj);
console.log(typeof(transeObj)) // 'string'
stringify하는 과정을 직렬화 (serialize) 라고 한다.
JSON.parse()
→ JSON 형태를 객체 형태로 변환한다.
let stringObj = '{직렬화된 객체의 문자열}'
let obj = JSON.parse(stringObj);
console.log(typeof(obj)) // 'object'
반대로 parse하는 과정을 역직렬화 (deserialize) 라고 한다.
JSON의 기본 규칙
JSON과 Javascript의 객체와의 차이점을 알아보자.
-
Javascript 객체
키 → 따옴표 없이 쓸 수 있다.
let obj = {a: 'hello'}
문자열 값 → 어떠한 형태의 따옴표도 사용 가능하다.
'hello' "hello"
-
JSON
키 → 반드시 큰따옴표를 붙여야 하고, 키-값 쌍 사이에 공백은 없다.
"{\"a\":\"hello\"}"
문자열 값 → 반드시 큰따옴표로 감싸야 한다.
'"hello"'