
JSON이란 무엇인가요? XML보다 더 나을까요?
최근 업데이트
JSON 개발자 중 한 명인 Douglas Crockford는 이렇게 설명해요. “JSON(JavaScript Object Notation)은 가벼운 데이터 교환 형식이에요. 사람이 읽고 쓰기 쉽고, 컴퓨터가 파싱하고 생성하기도 쉬워요.”
JSON은 JavaScript에서 시작됐지만, 주요 프로그래밍 언어에서도 기본 기능이나 라이브러리를 통해 지원해요. JSON은 웹에서 매우 널리 쓰이게 됐어요. 현재 거의 모든 공개 웹 서비스와 일부 비공개 웹 서비스에서 사용하고 있어요. 주로 웹 서버와 클라이언트 사이에서 정보를 교환하는 데 쓰여요. 이러한 인기에 힘입어 MySQL, PostgreSQL, MongoDB, Neo4j 등 많은 데이터베이스에서도 JSON을 지원해요.
이제 JSON의 구조, 사용하는 이유, XML과 비교했을 때의 장점, 한계, 그리고 언제 사용하면 좋은지 살펴볼게요.
JSON 파일 구조
어려운 기술 용어는 잠시 접어두고 설명하면, JSON 데이터는 키와 값이 짝을 이루는 일반 텍스트 파일에 저장돼요. 사람이 읽을 수 있는 코드라서 파일을 열고 내용을 살펴보기 쉬워요. 어떤 언어든 일반 텍스트를 처리하고 읽을 수 있어 JSON은 상호 운용성이 좋아요. 텍스트 기반이라 가볍고, 웹에서 데이터를 쉽고 빠르게 전송할 수 있어요. 많은 데이터를 표시하고 전송하는 웹 서비스에 JSON은 이상적인 선택이에요.
JSON의 대표적인 대안은 XML이에요. XML은 태그 구조를 사용해서 조금 더 복잡해요. 모든 프로그래밍 언어에 XML 파서가 있어 주로 데이터 교환에 사용돼요. 다양한 스키마로 XML을 검증할 수 있어서 온라인 쇼핑몰, 은행, 산업 시스템 통합 등 전자상거래 분야에 적합해요.
다만 XML은 프로그래밍 언어가 아니라 마크업 언어라는 점을 알아두세요. 데이터가 트리 구조로 저장되기 때문에 용량이 커지고 전송 속도도 느려져요.
XML을 JavaScript 객체로 변환하려면 수백 줄의 코드를 다뤄야 하고, 필요에 맞게 수정하는 작업도 해야 해요. 반면 JSON을 JavaScript 객체로 변환하는 데는 코드 한 줄이면 충분해요.
다행히 Filestar를 사용하면 손쉽게 XML을 JSON으로 변환해서 작업을 더 편하게 할 수 있어요. JSON을 XML로 변환하는 것도 똑같이 쉬워요.

JSON을 사용하는 이유
· JavaScript 엔진 덕분에 JSON은 파싱 속도가 빨라요. 크기도 작아서 데이터를 더 빠르게 전송할 수 있어요.
· JSON에는 불필요하거나 비어 있는 데이터 태그가 없어 단순하고 읽기 쉬우며 간결해요. 배열, 불리언, 숫자, null, 문자열, 기본 객체를 지원해요.
· JSON은 ASCII와 UTF 인코딩을 모두 지원해요.
· JSONP를 사용하는 경우를 제외하면 JSON은 더 안전한 파싱을 제공해요. 반면 XML은 공격에 취약해요.
· JSON과 AJAX를 함께 사용하면 데이터를 매우 빠르게 처리할 수 있어요.
JSON의 한계
JSON은 다양한 프로그래밍 언어에서 데이터를 유연하게 다룰 수 있게 해주지만, 몇 가지 단점도 있어요.
1. 스키마가 없다는 점은 장점이자 단점이에요. 원하는 형태로 데이터를 자유롭게 표현할 수 있지만, 실수로 잘못된 구조의 데이터를 만들기도 아주 쉬워요.
2. 숫자 데이터 형식은 IEEE-754 배정밀도 하나만 허용돼요. 기술 용어가 조금 어렵지만, 쉽게 말하면 여러 프로그래밍 언어에서 제공하는 세분화된 다양한 숫자 형식을 사용할 수 없다는 뜻이에요.
3. 추가 설명이 필요한 필드에 주석을 달 수 없어 오해가 생길 수도 있어요.
4. JSON은 XML보다 간결하지만, 데이터양이 매우 많거나 특별한 데이터 교환 목적이 있다면 더 효율적인 데이터 형식을 사용하는 편이 좋아요.
사용하기 좋은 경우:
모바일 앱이나 브라우저와 통신하는 프로그램을 작성할 때는 JSON을 사용하세요. XML은 프런트엔드에서 피해야 할 오래된 선택지이고, 목표로 하는 모바일 환경에도 잘 맞지 않아요.
서버 간 통신에서도 JSON이 유용할 수 있지만, Apache Thrift나 Avro 같은 직렬화 프레임워크가 더 잘 맞아요.
모든 데이터베이스에서 지원하더라도, 관계형 데이터베이스에서는 가능하면 JSON을 피하는 것이 일반적인 원칙이에요. 관계형 데이터베이스는 구조화된 데이터를 사용하기 때문에 JSON 객체 내부를 쿼리할 때 성능 문제가 생길 수 있어요.
요약
간단히 말해 JSON은 브라우저, 웹 서버, 모바일 앱 사이에서 데이터를 전송하는 사실상의 표준 형식이에요. 유연하고 단순해서 읽고 이해하고 다루기 쉬워요. JSON을 사용하면 검증과 의미 체계에 대해 크게 걱정할 필요가 없어요.
