개발 블로그

JSON이란? 본문

CS

JSON이란?

draidev 2022. 3. 20. 22:06

https://ko.wikipedia.org/wiki/JSON

[CODELION 강의] [심화] 같이 푸는 PYTHON - 오늘의 날씨에서 JSON이라는 개념이 나왔는데, 정보처리기사 공부를 할때도 나왔던 개념이고 데이터 전송에 관한 필수적인 개념인 것 같아 정리해 보려고 합니다.

01 JSON(JavaScript Object Notation)

Javascript 객체 문법으로 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷입니다. 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용합니다(서버에서 클라이언트로 데이터를 전송하여 표현하려거나 반대의 경우). 그리고 비동기 브라우저/서버 통신 (AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는 주요 데이터 포맷입니다.

JSON은 문자열 형태로 존재합니다. 네트워크를 통해 전송할 때 아주 유용한 형식입니다. 데이터에 억세스하기 위해서는 네이티브 JSON 객체로 변환될 필요가 있습니다. Javascript는 JSON 전역 객체를 통해 문자열과 JSON 객체의 상호변환을 지원합니다.

Note: 문자열에서 네이티브 객체로 변환하는 것은 파싱(Parsing)이라고 합니다. 네트워크를 통해 전달할 수 있게 객체를 문자열로 변환하는 과정은 문자열화(Stringification)이라고 합니다.

개별 JSON 객체를 .json 확장자를 가진 단순 텍스트 파일에 저장할 수 있습니다. MIME 타입은 application/json 입니다.

 

02 JSON 구조

JSON은 자바스크립트의 객체 표기법으로부터 파생된 부분 집합입니다.

따라서 JSON 데이터는 다음과 같은 자바스크립트 객체 표기법에 따른 구조로 구성됩니다.

  1. JSON 데이터는 이름과 값의 쌍으로 이루어집니다.
  2. JSON 데이터는 쉼표(,)로 나열됩니다.
  3. 객체(object)는 중괄호({})로 둘러쌓아 표현합니다.
  4. 배열(array)은 대괄호([])로 둘러쌓아 표현합니다.

예제

[
  {
    "name": "Molecule Man",
    "age": 29,
    "secretIdentity": "Dan Jukes",
    "powers": [
      "Radiation resistance",
      "Turning tiny",
      "Radiation blast"
    ]
  },
  {
    "name": "Madame Uppercut",
    "age": 39,
    "secretIdentity": "Jane Wilson",
    "powers": [
      "Million tonne punch",
      "Damage resistance",
      "Superhuman reflexes"
    ]
  }
]

Other notes

  • JSON은 순수히 데이터 포맷입니다. 오직 프로퍼티만 담을 수 있습니다. 메서드는 담을 수 없습니다.
  • JSON은 문자열과 프로퍼티의 이름 작성시 큰 따옴표만을 사용해야 합니다. 작은 따옴표는 사용불가합니다.
  • 콤마나 콜론을 잘못 배치하는 사소한 실수로 인해 JSON파일이 잘못되어 작동하지 않을 수 있습니다. JSONLint같은 어플리케이션을 사 용해 JSON 유효성 검사를 할 수 있습니다.
  • JSON은 JSON내부에 포함할 수 있는 모든 형태의 데이터 타입을 취할 수 있습니다. 즉, 배열이나 오브젝트 외에도 단일 문자열이나 숫자또한 유효한 JSON 오브젝트가 됩니다.
  • 자바스크립트에서 오브젝트 프로퍼티가 따옴표로 묶이지 않을 수도 있는 것과는 달리, JSON에서는 따옴표로 묶인 문자열만이 프로퍼티로 사용될 수 있습니다.

 

03 JSON 구조를 쉽게 파악할 수 있게 해주는 도구, pyprnt

  • 설치
pip install pyprnt
  • import
from pyprnt import prnt
  • 예시
menu = {
    "비빔밥": 20000,
    "돈까스": 10000
}
prnt(menu)

prnt(menu) 출력

 

 

Reference
https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON
http://www.tcpschool.com/json/json_basic_structure
https://ko.wikipedia.org/wiki/JSON

 

'CS' 카테고리의 다른 글

MVC 모델  (0) 2022.04.21
라이브러리 vs 프레임워크  (0) 2022.03.19
Comments