본문 바로가기
Python/데이터 다루기

JSON에 대한 소개

by 찐남 2022. 5. 8.

JSON은 JavaScript Object Notation의 

약어입니다. 

 

데이터 교환 형식으로 

데이터를 저장하고 

전송하는 방식이라는 

멋진 표현입니다. 

 

사용 사례에 매우 많아,

이루 말할 수 없을 정도입니다.

 

JSON은 JavaScript를 의미하지만,

Python, Ruby, PHP 및 Java와 같은

다른 언어와 함께 사용됩니다.

 

이외에도 JSON 형식이

여러 다양한 분야에서 사용되므로,

JSON이 어떻게 작동하는지

이해하는 것이 매우 중요합니다.

 

JSON은 객체 리터럴과 배열 리터럴이 

JavaScript에 추가된 1999년 12월에 

JavaScript의 하위 집합으로 

등장했습니다. 

 

거의 모든 프로그래밍 언어가 

JSON 데이터를 구문 분석할 수 

있을 정도로 빠르게 

언어 독립적(language-independent)

이 되었습니다.

 

JSON은 특별히 누군가에 의해 

발명된 것은 아닙니다. 

 

그러나 "JSON"이라는 용어는 

Atari 직원인 

Douglas Crockford에 의해 

만들어졌습니다. 

 

2002년에 Crockford는 계속해서 

json.org 도메인을 등록했습니다. 

 

Crockford는 상당히 중요한 인물이

되었기 때문에 그의 목소리는

JSON 단어를 퍼뜨리는 데

중요한 역할을 했습니다.

 

JSON 사용이 실제로 

폭발적으로 증가한 것은 

SPA(Single Page Application)의 

출현 이후였습니다.

모바일과 웹 애플리케이션 

모두 원활한 데이터 교환이 

필요했기 때문이죠.

 

이는 XML에 비해

JSON 데이터의 간결한 형식이

서버로 데이터를 주고받는 데

훨씬 더 효율적이기 때문입니다.

그 이유 중 하나는 JSON이

훨씬 더 효율적이고

간결한 언어이기 때문입니다.

 

다음은 XML의 예입니다.

<https://thenewstack.io/an-introduction-to-json/>

 

위의 JSON 코드는 다음과 같습니다.

<https://thenewstack.io/an-introduction-to-json/>

 

보시다시피 JSON은 

쓰기가 훨씬 쉬울 뿐만 아니라 

읽기도 쉽습니다.

 

JSON 파일은 
.json 확장자를 사용하지만 
.json 파일에서만 

JSON을 사용할 수 있는 건 아닙니다.

사실, 모든 .yml 및 .yaml 파일은

JSON 형식으로 작성됩니다.

 

JSON이 무엇이고

어떻게 구성되어 있는지

이해하는 것이 중요합니다.

 

Kubernetes 클러스터에

컨테이너를 배포하려면

JSON을 사용합니다.

 

Dockerfile을 만들 때에도

JSON을 사용하고 있습니다.

 

JSON 형식에 의존하는 데스크톱 및

서버 애플리케이션을 위한

구성 파일도 있습니다.

 

 

 

JSON 구조

JSON 파일은 두 가지 기본 구성 요소로

빌드됩니다.

 

  • "key", "value" 쌍의 모음
  • 정렬된 값 목록(list)

 

JSON 파일의 구조는 

key-value 쌍에 크게 의존합니다.

 

예를 들어, 사용자에 대한 정보가 포함된

구조화된 JSON 파일을

빌드하려고 가정해 보겠습니다.

 

해당 구조는 다음과 같을 수 있습니다.

 

{
    "f_name" : "Jack",
    "l_name" : "Wallen",
    "gender" : "Male",
    "profession" : "Writer"
}

 

위의 예에는 4개의

key-value 쌍이 있습니다.

  • f_name – Jack
  • l_name – Wallen
  • gender – Mail
  • profession – Writer

각 쌍은 항상 

다음 형식으로 설정됩니다.

 

“key” : “value”

 

key와 value는 모두

큰따옴표로 묶어야 합니다.

 

key는 항상 콜론의 왼쪽으로 이동하고,

값은 오른쪽으로 이동합니다.

각 개체 내에서 모든 key는

고유(unique) 해야 하며

공백을 포함할 수 있습니다.

 

따라서 "f_name" 대신 "first name"을

사용할 수 있습니다.

 

그러나 혼동될 수 있으므로

항상 key에 공백을 사용하지 않습니다.

 

value는 콜론의 오른쪽에 있으며

6가지 데이터 유형 중 하나여야 합니다.

  • Strings
  • Numbers
  • Objects
  • Arrays
  • Booleans
  • Null

중첩 객체를 사용하여 

key-value 쌍을 생성할 수도 있습니다.

 

아래의 예시는 이러한 구조를 

나타냅니다.

 

{
    "user" : {
        "f_name" : "Jack",
        "l_name" : "Wallen",
        "gender" : "Male",
        "profession" : "Writer"
    }
}

 

위에 "user" key와

"f_name", "l_name", "gender" 및

"profession"으로 구성된

key-value 쌍의 중첩 목록이 있습니다.

 

key-value 쌍 내에서

배열을 사용할 수도 있습니다.

배열은 [ ]로 보관됩니다.

 

위의 예제에서 배열을 사용하여

"profession" key에 두 개의 값을

더 추가해 보겠습니다. 

 

{
    "user" : {
        "f_name" : "Jack",
        "l_name" : "Wallen",
        "gender" : "Male",
        "profession" : ["Writer", "Actor", "Technologist"]
    }
}

 

이 두 가지 예는 모두 들여 쓰기라는 

매우 중요한 점을 보여줍니다.

 

JSON 형식을 사용할 때 

주의할 점 중 하나는

들여 쓰기가 절대적으로 일관되어야

한다는 것입니다.

 

위에서 볼 수 있듯이

중괄호는 중첩 키-값 쌍과 마찬가지로

서로 정렬됩니다.

들여 쓰기가 일관되지 않으면

JSON 형식을 사용하는 것이

무엇이든 작동하지 않습니다.

 

이것은 특히

JSON 형식 매니페스트의 길이와

복잡성이 증가할 때 디버그 하기가

매우 어려운 부분입니다.

 

이 때문에 처음부터 일관성 있게

들여 쓰는 것이 항상 중요합니다.

 

JSON 형식은 한 줄로 작성할 수 있습니다.

예를 들어 "user" 개체를 살펴보겠습니다.

 

{"user" : {"f_name" : "Jack", "l_name" : "Wallen", "gender" : "Male", "profession" : ["Writer", "Actor", "Technologist"]}}

 

위의 내용을 작성하는 것이 

더 쉽다고 생각할 수도 있지만,

매우 긴 문서에서는

여러 줄 형식이 훨씬 관리하기 쉽습니다.

 

오늘날 JSON은 SPA, 

로컬 애플리케이션 구성, 

컨테이너 매니페스트, 

클라우드 네이티브 개발, 

API 등 모든 곳에서 사용됩니다. 

 

Python의 자료형 중에서

딕셔너리(dictionary) 자료형이 

JSON과 매우 비슷한 구조입니다.

 

JSON에 대해 알아두시면

향후 데이터 분석과 

자료 송/수신 시에 매우 유용하게

쓰일 수 있어, 작성하였습니다.

 

 

반응형

댓글