JavaScript Object Notation (JSON)은 웹에서 데이터를 전송할 때 일반적으로 사용하는 문자열 포맷으로, 자바스크립트의 객체 리터럴 표기법을 따른다.
JSON과 자바스크립트의 객체 표기법은 유사하지만 차이가 있다.
가장 큰 차이는 JSON은 객체가 아닌 문자열이며 자바스크립트에서 JSON 의 값을 읽기 위해서는 자바스크립트 객체로 변환하여야 한다는 것이다. 이를 deserialization
이라고 한다.
반대로 자바스크립트 객체를 JSON 문자열로 변환하는 것은 serialization
이다.
자바스크립트에서 객체를 string 타입의 JSON 문자열으로 변환하기 위해서는 JSON.stringify()
를 사용하며, JSON 문자열 데이터를 자바스크립트 객체로 변환하기 위해서는 JSON.parse()
를 사용한다.
JSON에서는 각 property명을 반드시 큰따옴표(")로 감싸야 한다. 작은따옴표는 사용하지 않는다.
JSON에서는 undefined, NaN, Infinity 등의 형식을 사용할 수 없다. (자바스크립트 객체에서 undefined 형식의 데이터를 JSON으로 변환했다가 다시 자바스크립트 객체로 변환하는 경우, "undefined" 라는 string 형식의 단순 문자열이 된다.)
JSON에는 주석을 추가할 수 없다.
request와 response를 보내고 받을 때는 항상 JSON으로 변환하여 전송한 뒤 파싱하여 사용하는 과정이 필요하므로 차이점을 잘 숙지하고 있어야겠다.