데이터를 키와 값으로 구성된 객체에 담아 처리하는 규격
JSON : JavaScript Object Notation
가공된 JSON 데이터는 텍스트 기반이기 때문에 사람이 쉽게 저장된 데이터를 읽고 수정할 수 있다.
JSON을 사용하면 데이터를 쉽게 읽고 수정할 수 있어서 디버깅이 편리하고 생산성도 높아진다.
NoSQL 데이터베이스(ex. MongoDB)는 JSON과 유사한 BSON을 사용하고, 관계형 데이터베이스(ex. MySQL)도 정형화되지 않은 데이터를 보관할 때 JSON을 선호한다.
JSON은 주석을 지원하지 않는다.
{
'number' : 123,
'pi' : 3.14,
'str' : '문자열 값',
'object' : {
'str2' : '문자열 값2',
'object' : {
'number2' : 123
}
},
'num_array' : [1,2,3]
}
모든 JSON은 중괄호로 사용하거나 배열 형태의 대괄호를 사용하는데, 보통은 중괄호를 많이 사용한다. 배열 안에는 한 가지 타입만을 사용할 수 있어서 제한적이다.
키는 문자열만 사용해야 한다.
빈 값(value)을 null로 표기하는 건 좋지 않다. 왜냐하면 그 값이 어떤 형태의 데이터를 담고 있고, 어떤 타입 인지를 알 수 없기 때문이다.
따라서 숫자는 0으로 표기
문자열은 ""
객체는 {}
배열은 []
JSON은 사람이 읽고 수정하기 편한 만큼, 컴퓨터 입장에서는 비효율적이다.
JSON이 읽기 편한 텍스트 기반이기 때문에, 이진수로 데이터를 표현하는 기존의 방법보다 데이터를 표현하는 데 비용 소모가 크다.
JSON 데이터를 압축하면 이진수 데이터 파일 크기와 비슷해질 수 있지만, CPU 자원을 많이 사용해야 한다.
결국 JSON은 짧은 시간에 많은 데이터를 주고 받아야 하는 상황에는 적합하지 않다.
JSON으로 여러 서버와 클라이언트가 통신을 한다면, 서로 다른 메세지 구조나 규격때문에 데이터 형태나 타입이 맞지 않아 오류를 발생시킬 수 있다. 따라서 JSON을 사용하려면 모든 서버와 클라이언트가 동일한 메세지 구조와 규격을 가져야 한다.