본문 바로가기
IT 정보/용어

JSON이란? 비동기 통신의 필수 요소?

by 희품 2025. 4. 8.
반응형

비트코인과 같은 암호화폐가 이슈가 되면서 데이터는 현대 사회의 새로운 화폐라는 말이 생겨났다.
암호화폐뿐만 아니라, 사실 누구나 매일 데이터를 주고받는다.

카카오톡에 새해 복 많이 받으세요라는 문구와 이모티콘이 톡으로 왔다.
내 핸드폰에 "보낸 사람", "새해 복 많이 받으세요.", "이모티콘"은 어떻게 전달되었고, 또 어떻게 해석하는 걸까?

 

JSON 이름의 유래와 뜻

JSON은 데이터 교환 형식으로 널리 사용되는 경량 데이터 표현 방식이다. 사람과 기계 모두 쉽게 쓸 수 있도록 설계되었고, 웹 애플리케이션이나 서버와 클라이언트 간 데이터 전송에 많이 사용된다.

 

특히 비동기 통신을 효율적으로 처리할 수 있어서 현대 웹 애플리케이션에서는 필수적인 요소자리 잡고 있다.

JSON(Javascript Object Notation)이라는 이름을 풀어서 해석하면, 자바스크립트 객체 표현법이다. Javascript라는 프로그래밍 언어에서 객체(Object)를 정의할 때 사용하는 문법과 비슷해서 JSON이라는 이름이 붙었다. 그렇다고 JSON을 Javascript에서만 쓸 수 있는 것이 아니라, 다양한 프로그래밍 언어에서 사용 가능한 범용 데이터 형식으로 자리 잡게 되었다.

 

JSON은 어떻게 생겼을까?

 

JSON은 간단한 [키, 값] 쌍으로 데이터를 표현하며, 이게 전부다.

좀 더 세세히 살려보면, 중괄호 {}로 감싸고, 내부에는 "키" : 값 형식으로 데이터를 저장한다.

배열은 대괄호 []로 표현하며, 이러한 구조 덕분에 데이터의 직관적인 표현이 가능해진다.

{
  "이름" : "홍길동",
  "나이" : 30,
  "취미" : ["블로그 글쓰기", "독서", "음악"]
}

JSON 객체는 이렇게 쓰는 게 정말 전부다. 보면 알겠지만, 이름 정보, 나이 정보, 취미 정보를 가진 묶음이다. JSON은 간결한 문법 덕분에 사람도 이해하기 쉬우면서, 기계도 손쉽게 이해하고 데이터를 구분할 수 있다는 장점을 가지고 있다.

 

 

JSON의 특징

JSON은 구조가 간단하다. 중괄호, 대괄호, 큰 따옴표, 콜론, 콤마를 규칙에 맞게 쓰면 끝이다. 모든 공백과 줄 넘김은 무시해도 된다. 줄 넘김이 없이 띄어쓰기만 하거나, 줄 넘김을 5번 하거나 똑같은 데이터라는 의미다.

  • 구조가 간단해 전송 속도가 빠르다. 대용량 데이터를 다룰 때 가장 큰 성능상의 이점을 가진다.

  • 다양한 데이터 타입을 지원하기 때문에 복잡한 구조도 표현할 수 있다. 중첩 객체와 배열을 이용하면, 복잡한 데이터 구조도 직관적으로 표현할 수 있다.

  • 거의 모든 프로그래밍 언어에서 데이터를 주고받을 수 있다. 물론 일부 프로그래밍 언어에서는 전용 라이브러리를 이용해야 하는데, 라이브러리를 이용하면 되는 문제다.

  • 사람도 쉽게 이해할 수 있는 텍스트 기반 형식이고, 기계도 쉽게 이해할 수 있다. 그러면 더 어려운 형식은 무엇일까? 꺽쇠 <> 기호를 쓰는 XML 형식과 비교해 보면 직관적인 형식이 어떤 형식인지 쉽게 알 수 있을 것이다.
<이름>홍길동</이름>
<나이>30</나이>
<취미1>블로그 글쓰기</취미1>
<취미2>독서</취미2>
<취미3>음악</취미3>

 

 

JSON은 어디서 쓰일까?

JSON은 대표적으로 쓰이는 예시가 있는데, 사실 거의 모든 분야의 통신에서 쓰일 수 있다. 그만큼 경량화되어 있으면서 직관적이고, 표현도 다양하게 할 수 있기 때문이다.

  • API 데이터 전송
    • API에서 서버와 클라이언트 간 데이터 전송 형식으로 JSON이 가장 많이 사용된다. API를 언급하는 프로젝트는 대부분 웹 기반일 확률이 높은데, 데이터 크기의 효율, 데이터 활용 난이도 등 가장 효율적이기 때문이다. 특히 페이지(프론트앤드)에서 서버의 기능을 수행하는(백엔드) API를 호출할 때, JSON이 기본 형식으로 쓰이는 경우가 많다.

  • 데이터 저장
    • 구성 파일이나 로그 파일을 JSON 형식으로 저장하여 관리하는 것도 좋다. 사실 Windows의 INI 파일 같은 설정파일을 봤다면, INI 파일이 더 간편해 보일 수는 있지만, INI 파일에는 표현에 한계가 있다. 최근에는 설정 파일도 JSON 형식으로 많이 사용된다.

  • 통신
    • 웹 기반의 프로젝트이면, 프레임워크 등을 통해 비동기로 요청하는 작업을 많이 하게 된다. JSON 데이터를 사용해 비동기 페이지 업데이트를 수행하는 작업을 많이 하는데, 이러한 작업은 페이지 새로고침 없이 데이터를 동적으로 갱신할 수 있게 도와준다.

  • 데이터 직렬화
    • 위에서 카카오톡을 언급했었다. 보낸 사람, 문자 내용, 이모티콘 등을 포함한 모든 정보를 통틀어서 객체(Object)라고 표현하는데, 이 객체를 통신에 쓰일 수 있는 문자열로 바꾸는 작업인 직렬화 작업을 할 때, JSON 형식을 많이 사용한다.

 

JSON을 사용할 때 주의할 점

JSON은 문자열, 숫자, 배열, 객체 등 다양한 타입을 지원한다. 하지만, 함수나 날짜 객체 등은 표현할 수 없다.

객체를 처리할 때는 문자열로 변환하는 등의 별도의 처리가 필요하다.

개인적으로 JSON의 가장 큰 단점이라고 볼 수 있는 부분은 문법 오류이다.

너무나 간단하고 직관적이기 때문에 몰라서 잘못 쓸 일은 없지만, 데이터가 방대해지면 잘못된 쉼표나 따옴표로 JSON 형식이 틀어져 파싱 오류가 발생하는 경우가 많다. 정상적인 JSON 형식인지 유효성 검사를 철저히 해주어야 한다.

또한 JSON 형식은 직관적으로 나열되어 있는 형태이기 때문에 악성 코드가 심겨서 전송되어 올 수 있다. 서버에서 JSON으로 데이터를 받을 때 데이터를 검증하고 사용하지 않으면, 심각한 보안 문제가 발생할 수 있으니 항상 조심해야 한다.


특히 WEB 기반에서 필수로 자리 잡은 JSON 데이터 교환 형식은 경량성과 호환성을 모두 갖추고 있어 라이브러리 환경만 잘 갖추면 모든 프로그래밍 언어, 모든 개발 환경에서 공통의 통신 방식으로 쉽게 사용할 수 있다. 특히,  비동기 통신을 이용할 때 사용하면, 효율적으로 동적 웹 애플리케이션 등을 개발할 수 있다.

JSON을 잘 활용하면 보다 효율적이고 직관적인 데이터 처리와 일관된 데이터 구조를 유지할 수 있어서 개발자라면 꼭 알아두고 숙지해 둘 필요가 있을 것이다.

 

 

 

반응형