본문 바로가기
TIL&WIL

241119 TIL - JSON, MIME type

by 나노다 2024. 11. 19.

JSON (JavaScript Object Notation)

"구조화된 데이터를 자바스크립트 객체 문법으로 표현하기 위한 문자 기반의 표준 포맷"

  - 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용 (서버에서 클라이언트로 데이터를 전송해 표현하려거나 반대의 경우에도)

  - 개별 JSON 객체를 `.json` 확장자를 가진 단순 텍스트 파일에 저장할 수 있음

 

JSON은 문자열 형태로 존재

  - 네트워크를 통해 전송할 때 유용함
  - 데이터에 접근하기 위해선 네이티브 JSON 객체 형태로 변환해야함

 

MIME 타입은 application/json

 

JSON의 구조
JSON은 자바스크립트 객체 리터럴 문법을 따르는 문자열이기 때문에 그 내부엔 자바스크립트의 기본 데이터 타입인 문자열, 숫자, 배열, 불리언, 다른 객체 등을 모두 포함할 수 있음

기타 정보
  - JSON은 순수한 데이터 포맷. 오직 프로퍼티만 담을 수 있으며, 메서드는 담을 수 없음
  - JSON은 문자열과 프로퍼티 이름 작성시 큰따옴표만 사용 가능
  - 콤마나 콜론 배치 실수로 JSON 파일이 잘못될 수 있으니 주의
  - parse() : 매개변수로 JSON 문자열을 받아 일치하는 자바스크립트 객체로 변환
  - stringify() : 매개변수로 자바스크립트 객체를 받아 일치하는 JSON 문자열 형태로 변환

 

 

MIME type (미디어 타입) 

Multipurpose Internet Mail Extensions

  - 문서, 파일 또는 바이트 집합의 성격과 형식을 나타냄
  - 브라우더는 파일 확장자 말고 미디어 타입을 사용해 URL 처리 방법을 결정하기 때문에, 웹서버가 Response Header의 Content-Type에 올바른 미디어 타입을 보내는 것이 중요함

 

기본 구조

항상 type/subtype의 형태. 추가정보를 위해 선택적으로 매개변수가 추가되기도 함. 이 경우type/subtype;parameter=value의 형태.

  - type : 데이터 타입이 속하는 일반 카테고리. `video` 또는 `text` 등
  - subtype : MIME 타입 바탕으로 정확한 데이터 종류 식별. 예를 들어 `text`의 하위 타입에는 `plain(평문 텍스트)`, `html(html 소스코드)`, `calendar` 등이 있음

 

type의 두 가지 클래스
1) discrete(개별 타입) : 단일 텍스트나 음악 파일, 단일 비디오 등 단일 파일이나 매체
  - application : 다른 타입에 속하지 않는 모든 종류의 이진 데이터
  - audio, example, font, image, model, text, video
2) multipart : 여러 컴포넌트 조각으로 구성된 문서. 각 조각은 고유한 개별 MIME 타입을 가질 수 있으며, multipart 타입은 하나의 트랜잭션으로 함께 여러 파일을 캡슐화 할 수 있음. 글을 전송하면서 동시에 사진이나 영상들을 첨부할 수 있는 이메일 등에서 이 타입을 활용
  - message, multipart