본문 바로가기
Study

[JSON] JSON 정리

by mmm- 2023. 10. 11.

JSON

: 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식

  • JavaScript Object Notation(자바 스크립트 객체 표기법)의 약자
  • 텍스트 기반이기 때문에 어떤 프로그래밍 언어에서도 데이터를 읽고 사용 가능
  • XML보다 좀 더 쉽게 데이터를 교환, 저장하기 위해 고안
    • XML
      • EXtensibleMarkup Language의 약자로, HTML과 매우 비슷한 문자 기반의 마크업 언어
      • 데이터를 저장하고 전달할 목적으로 만들어짐
      • HTML태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의 가능

 

JSON 특징

  • JS를 확장하여 만들어짐
  • JS 객체 표기법을 따름
  • 사람과 기계가 모두 읽기 편하도록 고안
  • 프로그래밍 언어와 OS에 독립접

 

JSON vs XML

  JSON XML
공통점
  • 데이터를 저장하고 전달하기 위해 고안
  • 기계뿐만 아니라 사람도 쉽게 읽을 수 있음
  • 계층적인 데이터 구조를 가짐
  • 다양한 프로그래밍 언어에 의해 파싱될 수 있음
  • XMLHttpRequest 객체를 이용해 서버로부터 데이터를 전송받을 수 있음
차이점
  • 종료 태그 사용 X
  • XML보다 구문이 더 짧음
  • 배열사용 가능
  • JS 표준 함수인 eval() 함수로 파싱
  • 문자열을 전송받은 후 해당 문자열을 바로 파싱
    (XML보다 처리 속도↑)
  • 사용자가 직접 데이터의 무결성을 검증해야함 
    (데이터 검증이 필요한 곳에서는 XML 많이 사용)
  • 배열사용 불가
  • XML 파서로 파싱
  • XML DOM을 이용해 해당 문서에 접근

 

JSON 구조

  • 이름과 값의 쌍으로 이루어짐
{ "key": value }
  • 쉼표(,)로 나열됨
  • 객체는 중괄호({})로 둘러쌓아 표현
  • 배열은 대괄호([])로 둘러쌓아 표현

 

JSON 데이터

  • 데이터의 이름은 문자열이므로 항상 큰따옴표("") 사용
  • 데이터 타입
    • number
      • 정수, 실수, 지수만 나타낼 수 있고, 8진수나 16진수 등을 표현하는 방법은 제공 X
    • string
    • boolean
    • object
      • 프로퍼티의 집합
    • array
      • 데이터 값의 집합
      • 여러 타임의 배열 요소 가질 수 있
    • null
      • 항상 소문자로 표기해서 사용
      • 값을 가지고 있지 않다는 의미 (undefined는 값 자체가 없다는 의미)
      • JSON 에서는 undefined 타입 제공 X

JSON이 가져올 수 있는 데이터

JSON은 단순히 데이터 포맷일 뿐이라 그 데이터를 불러오기 위해선 XMLHttpRequest() 를 사용해야하는데 이 함수는 동일 서버에 대한 것만 지원하기 때문에 JSON은 JS가 로드된 서버의 데이터만 가져올 수 있다.
(JSONP 또는 프락시 역할을 하는 서버쪽 Script 파일로 가능하게 할 수 있음)

 

JSONP

: CORS가 활성화 되기 이전의 데이터 요청 방법으로, 다른 도메인으로부터 데이터를 가져오기 위해 사용하는 방법


JSON 형식 텍스트 JS Object로 변환

  • JSON.parse(JSON 형식의 문자열)
    : JSON 형식의 텍스트를 JS 객체로 변환
  • JSON.stringify(JSON 형식의 문자열로 변환할 값)
    : JS 객체를 JSON 텍스트로 변환

 

 

참고

'Study' 카테고리의 다른 글

[Protocol] HTTP 정리  (0) 2023.10.16
[HTTP] HTTP message  (0) 2023.10.13
[Web] Stateful / Stateless 차이  (2) 2023.10.11
[Firebase] Realtime Database & Firestore  (0) 2023.10.10