JSON(JavaScript Object Notation)

JSON(JavaScript Object Notation)은 자바스크립트 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다.

JSON(JavaScript Object Notation)은 클라이언트와 서버 간 데이터 교환을 위해 사용된다.

JSON은 일반 텍스트 포맷보다 효과적인 데이터 구조화가 가능하며 XML 포맷보다 가볍고 사용하기 간편하며 가독성도 좋다.


JSON은 자바스크립트의 객체 리터럴과 매우 흡사하다.

하지만 JSON과 JavaScript 의 Object는 유사한 구조를 가지고 있지만 엄밀히 다른 개념이다.
 


JavaScript의 Object는 JavaScript Engine 메모리 안에 있는 데이터 구조이며,

JSON은 객체의 내용을 기술하기 위한 text 파일이라는 점에서 다르다.

첫줄에서 말했듯이 자바스크립트 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다.

또한 JSON은 확장자명이 .js가 아닌 .JSON 인 확장자를 가진다.




JSON.stringify();

JavaScript 에는 객체를 JSON으로 바꿔주는 메서드 JSON.stringify(); 가 존재한다.

JSON.stringify();를 사용하면 객체는 문자열 형식으로 변경되어 네트워크 통신 및 저장에 사용된다.

이렇게 변경된 결과의 문자열은 직렬화 된, JSON으로 인코딩 된, 문자열로 변환된 객체라고 부른다.

여기서 주의할 점은 JSON으로 변환하려는 객체안에 포함된 함수와 Symbol은 문자열로 변환시켜주지 못하기때문에 stringify로 데이터를 변환하여도 JSON 데이터에 포함시키지 못한다.




JSON.parse();

JavaScript 에는 JSON을 객체(Object)로 바꿔주는 메서드 JSON.parse(); 가 존재한다.

JSON.parse();를 사용하면 문자열 형식의 JSON을 다시 객체로 변경할 수 있다.

이렇게 변경된 결과의 객체를 역직렬화 된, JSON으로부터 디코딩 된 객체라고 부른다.

여기서 주의할점은 parse로 변환되는 JSON 데이터는 모두 문자열이기 때문에 기존에 객체안에 프로퍼티 값으로서 선언된 객체의경우 원래 전달했던 객체로서 사용하지 못하게된다.

이때는 parse API의 두번째 옵션인 콜백함수를 가지고 문자열로 전달된 프로퍼티의 값이었던 객체를 다시 객체로 만들어서 사용할 수 있다.




HTTP에서 메세지(데이터)는 문자열로 전송되기 때문에 상대방에게 데이터를 전송할 때 JSON.stringify() 메서드를 호출하여 JSON을 문자열로 만들어 전송하고

이렇게 전달받은 데이터를 다시 JSON.parse() 메서드를 호출하여 JSON으로 변환하고, 변환된 데이터를 JavaScript 객체(Object)의 값으로 할당하면 객체(Obejct)가 된다.

즉 클라이언트와 서버가 데이터를 주고 받을 때 JSON을 가지고 주고 받고 이를 객체로서 사용하기 위해 JSON.parse() 메서드를 사용한다.




JSON 표기법 주의사항

JSON에서는 작은 따옴표와 백틱을 사용할 수 없다.

프로퍼티와 문자열은 큰따옴표로 감싸야 한다.

JSON은 일반 객체, 배열, 문자열, 숫자, 불린값, null을 지원한다. 그외의 함수와 Symbol 은 지원하지 않는다.



댓글