JSON 포맷으로 저희 쪽으로 데이터 보내주시면 됩니다.
key 값 정의하고 알려주세요.
개발 담당자하고 미팅을 하다 보면 JSON이라는 말을 심심찮게 들어볼 수 있다. 대충은 무슨 소리인 줄 알아서 항상 '그렇구나~' 하고 넘어갔지만, 갑자기 좀 더 깊게 알아보고 싶어졌다. 그래서 오늘은 JSON이 뭔지, 왜 쓰이는 건지에 대해 살펴보도록 하겠다.
JSON의 사전적 정의를 찾아보면 아래와 같다.
JavaScript Object Notation (JSON):
Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다. 웹 애플리케이션에서 데이터를 전송할 때 일반적으로 사용합니다(서버에서 클라이언트로 데이터를 전송하여 표현하려거나 반대의 경우).
... 사전적 정의는 늘 어렵다^^ JSON을 이해하기 위해서는 XML이라는 언어에 대해 짚고 넘어가는 것이 좋다. JSON은 XML의 대안으로써 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안되었기 때문이다.
우선 XML(Extensible Markup Language)은 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)이다. 이 언어는 무언가를 실행하는 언어가 아니다. 그보다는 데이터를 표현하는 '형식'에 가깝다. 마치 HTML 자체로는 정보를 표현할 수만 있고, 그 자체로는 아무것도 할 수 없는 것처럼. JSON이 나오기 전까지는 이 XML이라는 '형식'을 이용해 데이터를 주고받았다.
그런데 XML은 여러모로 불편한 점이 있었다. 데이터를 표기할 때마다 종료 태그를 붙여야 하고, XML을 처리하려면 별도의 응용프로그램이 필요하다. 이런 불편한 점을 개선한 형식이 바로 JSON이다.
XML과 JSON을 예시로 살펴보면 이렇다. 요즘 필자는 남주혁에게 많은 관심이 있으므로 남주혁에 관한 데이터를 XML과 JSON으로 표현해보겠다.
XML의 경우 데이터를 구성하는 속성마다 태그를 붙여야 한다. 하지만 JSON은 key와 Value로 이루어져 있기 때문에 한눈에 봐도 JSON이 훨씬 간편하다! (JSON의 구조는 밑에서 더 설명하겠다.)
JSON이 XML보다 나은 점을 박제하자면 아래와 같다.
(XML 살려ㅜㅜ)
JSON이 XML보다 좋은 점 (출처: https://www.tcpschool.com/json/json_intro_xml)
1. JSON은 종료 태그를 사용하지 않는다.
2. JSON의 구문이 XML의 구문보다 더 짧다.
3. JSON 데이터가 XML 데이터보다 더 빨리 읽고 쓸 수 있다.
4. XML은 배열을 사용할 수 없지만, JSON은 배열을 사용할 수 있다.
(배열은 여러 개의 데이터가 순서를 가지고 나열된 집합을 말한다. tmi 1 참조)
5. XML은 XML 파서로 파싱 되며, JSON은 자바스크립트 표준 함수인 eval() 함수로 파싱 된다.
(대충 XML 파서 없이 함수만 가지고 파싱이 가능하다는 뜻)
6. XML 문서는 XML DOM(Document Object Model)을 이용하여 해당 문서에 접근한다. 하지만 JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱 하므로, XML보다 처리속도가 빠르다.
JSON 데이터는 이름과 값의 쌍으로 구성된다. 이름과 값은 아래와 같이 표현된다.
심플하게 설명하자면 이게 전부다. 더 많은 JSON의 문법을 알고 싶다면 아래 페이지를 참고해보자. 30분 만에 JSON을 깨우칠 수 있다.
https://www.tcpschool.com/json/json_basic_structure
이처럼 JSON의 특징 중 하나가 빠르다는 점 때문에, 빠른 응답이 필요한 환경에서 많이 사용되고 있다. 그중 하나가 바로 챗봇 서비스이다. 사용자가 카카오톡 등 메신저 서비스에서 질의를 하면, 챗봇 플랫폼에서는 챗봇을 운영하고 있는 서비스 서버(아래 예시에서는 은행 서버)에 정보를 요청하게 된다. 자체 서버에서는 챗봇 플랫폼으로 답변을 보내게 되는데, 이때 JSON을 이용한다. 챗봇 플랫폼에서는 JSON 형태로 받은 정보를 메시지 템플릿에 가공해서 최종 사용자에게 보여주게 된다.
간단한 예시를 통해 살펴보자.
아래와 같은 메시지를 보내기 위해서 JSON 형식은 아래와 같다.
이때 버튼을 정의한 부분에서 '배열'이 사용된 것을 확인할 수 있다. 배열(array)이란 여러 개의 데이터가 순서를 가지고 나열된 집합을 의미하며, 대괄호([])로 둘러싸여 있다. '배열'은 XML에서는 사용할 수 없는, JSON만이 가능한 형식이다.
기획자가 JSON을 안다고 해서, 갑자기 JSON 파일을 작성해서 서버로 전송하는 시스템을 구현할 일은 없을 것이다. 하지만 JSON을 아는 것은 마치 API를 이해할 수 있는 것과 비슷하다. 직접적으로 API를 사용할 일은 크게 없지만 내용을 알면 커뮤니케이션을 할 때 도움이 되는 것처럼, 백엔드 기획을 할 때 JSON의 내용을 읽어낼 수 있다면 좀 더 커뮤니케이션을 하기 편한 기획자가 되는 것이다.
http://www.tcpschool.com/json/intro