뭘까?
JavaScript Object Notation의 줄임말로 데이터 교환을 위해 만들어진 객체 형태의 포맷이다.
데이터 교환?
수신자와 발신자가 같은 프로그램을 사용하거나 문자열처럼 범용적으로 읽을 수 있을 때 데이터 교환이 가능하다.
모든 수신자와 발신자가 같은 프로그램을 사용하길 기대하긴 힘들 것이니, JSON같이 가벼운 데이터 교환을 위한 포맷을 만들었다고 한다. 여기서 가볍다는 말은 컴퓨터가 쉽게 만들고 읽어들일 수 있다는 것이다.
사용법
JSON.stringify: Object Type -> JSON
JSON.parse: JSON -> Object Type
전송가능한 string
let transferableMessage = JSON.stringify(message)
console.log(transferableMessage) // `{"sender":"김코딩","receiver":"박해커","message":"해커야 오늘 저녁 같이 먹을래?","createdAt":"2021-01-12 10:10:10"}`
console.log(typeof(transferableMessage)) // `string`
읽을 수 있는 JSON
let packet = `{"sender":"김코딩","receiver":"박해커","message":"해커야 오늘 저녁 같이 먹을래?","createdAt":"2021-01-12 10:10:10"}`
let obj = JSON.parse(packet)
console.log(obj)
/*
* {
* sender: "김코딩",
* receiver: "박해커",
* message: "해커야 오늘 저녁 같이 먹을래?",
* createdAt: "2021-01-12 10:10:10"
* }
*/
console.log(typeof(obj))
// `object`
이렇듯, 전송을 위한 포멧은 string, 읽기 위한 포맷은 JSON이라고 생각하면 된다.
근데 JavaScript에도 객체가 있는데 이것과 무엇이 다를까?
자바스크립트 객체 | JSON | |
키 | 키는 따옴표 없이 쓸 수 있음 | 반드시 큰따옴표를 붙여야 함 |
문자열 값 | 문자열 값은 어떠한 형태의 따옴표도 사용 가능 | 반드시 큰따옴표로 감싸야 함 |
미묘하게 다르다!
JSON이 XML보다 유리한 점이 무엇일까?
해당 블로그에 너무 잘 정리되어 있었다.
JSON은 XML보다 빠르고 절약할 수 있다!
JSON은 JSON.stringfy를 통해 한 줄로 만들 수 있다.
YAML은 conf같은 환경설정 파일에 많이 쓰이고, JSON은 데이터 전송에 많이 쓰인다.
이진 형식의 데이터 교환 포맷도 있다는데?
해당 블로그에 예시를 들어 잘 정리되어 있었다.
이진 형식으로 데이터 교환을 하는 것은 대표적으로 구글의 protobuf가 있다.
해당 포맷도 JSON과 같이 언어를 막론하고 데이터 교환을 할 수 있다.
데이터 교환시 문자열이 아닌 이진 형식을 이용하므로 속도에서 우수하다.
'YAML' 카테고리의 다른 글
[YAML]사용 이유와 문법 (0) | 2022.03.22 |
---|