JSON

JavaScript Object Notation (JSON)은 JavaScript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이며, 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용합니다. (서버에서 클라이언트로 데이터를 전송하여 표현하려거나 반대의 경우)

 

JSON 이란?

    • JavaScript 객체 문법을 따르는 문자 기반의 데이터 포맷
    • 하지만, JavaScript 가 아니더라도, JSON 을 읽고 쓸 수 있는 기능이 다수의 프로그래밍 환경에서 제공됨
    • 문자열 형태로 존재함 → 네트워크를 통해 전송할 때 아주 유용
    • 데이터에 억세스 하기 위해서는 네이티브 JSON 개체로 변환될 필요가 있음 (하지만, JavaScript 는 JSON 전역 객체를 통해 문자열과 JSON 객체의 상호변환을 지원함)
    • 개별 JSON 객체를 .json 확장자를 가진 단순 텍스트 파일에 저장할 수 있음. (MIME 타입은 application/json 이다.)
MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 매커니즘이다.
문자열에서 네이티브 객체로 변환하는 것을 파싱(Parsing)이라고 한다. 네트워크를 통해 전달할 수 있게 객체를 문자열로 변환하는 과정은 문자열화(Stringification)이라고 한다.

 

JSON 의 구조

JSON 안에는 JavaScript 객체 리터럴 문법과 마찬가지로 JavaScript 의 기본 데이터 타입인 문자열, 숫자, 배열, 불리언 그리고 다른 객체를 포함할 수 있다.

{
  "name" : "kwah",
  "favoriteSportsTeam" : "Real Madrid CF",
  "favoritePlayers" : [
    {
      "playerName" : "Vinicious Jr.",
      "division" : "La Liga Santander",
      "clubName" : "Real Madrid CF",
      "backNumber" : "20",
      "position" : "FW",
      "nationality" : "Brazil"
    },
    {
      "playerName" : "Sergio Ramos",
      "division" : "LIGUE 1 Uber Eats",
      "clubName" : "Paris Saint-Germain FC",
      "backNumber" : "4",
      "position" : "CB",
      "nationality" : "Spain"
    },
    {
      "playerName" : "Luka Modrić",
      "division" : "La Liga Santander",
      "clubName" : "Real Madrid CF",
      "backNumber" : "10",
      "position" : "MF",
      "nationality" : "Croatia"
    },
    {
      "playerName" : "Toni Kroos",
      "division" : "La Liga Santander",
      "clubName" : "Real Madrid CF",
      "backNumber" : "8",
      "position" : "MF",
      "nationality" : "Germany"
    }
  ]
}

이 객체를 JavaScript 프로그램에서 로드하고, football 이라는 이름의 변수에 파싱하면 dot / bracket notation 을 통해서 객체 내의 데이터에 접근할 수 있게 된다.

football.favoriteSportsTeam
football['active']

하위 계층의 데이터에 접근시에는, 간단하게 프로퍼티 이름과 배열 인덱스의 체인을 통해서 접근할 수 있다. 예를 들어, football 의 2번째 favoritePlayers 에 접근하려면 다음과 같이 하면 된다.

football['favoritePlayers'][1]
  1. 변수 이름을 지정한다.
  2. 변수 내의 프로퍼티에 접근하려면 ["해당 프로퍼티"] 를 입력한다.
  3. 만약 해당 프로퍼티가 객체로 구성된 배열이면, 뒤에 [1] 을 입력한다. (인덱스이기 때문에 2가 아닌 1이다.)

'etc' 카테고리의 다른 글

PowerMockup  (0) 2023.06.05
디자인 패턴과 프레임워크  (0) 2023.02.02
HTTP  (0) 2022.08.21
HTTP 요청과 응답  (0) 2022.08.21
클라이언트와 서버  (0) 2022.08.18

+ Recent posts