JSON
은 JavaScript Object Notation의 줄임말로, 데이터 교환을 위해 만들어진 객체 형태의 포맷이다.
네트워크를 통해, 어떤 객체 내용을 다른 프로그램에 전송한다고 가정해보자.
이 객체 내용을 일종의 메신저 혹은 채팅 프로그램에서 쓰는 하나의 메시지라 한다면, 다음 객체를 어떻게 전송할 수 있을까?
메시지를 담고 있는 객체 message
const message = {
sender: "김사과",
receiver: "박키위",
message: "키위야 오늘 저녁 같이 먹을래?",
createdAt: "2023-04-12 10:10:10"
}
메시지 객체가 전송할 수 있게 하려면, 메시지를 보내는 발신자와 메시지를 받는 수신자가 같은 프로그램을 사용하거나, 문자열처럼 범용적으로 읽을 수 있는 형태여야 한다.
전송할 수 있는 조건 (transferable condition)
reciever
)와 발신자(sender
)가 같은 프로그램을 사용한다.message.toString()
)나 형 변환(String(message)
)을 시도하면, [object Object]
라는 결과를 리턴한다.JSON.stringify
: 객체를 JSON으로 변환한다.
let transferableMessage = JSON.stringify(message)
console.log(transferableMessage)
stringify
하는 이 과정을 직렬화(serialize)한다고 한다.JSON
으로 변환된 객체의 타입은 문자열이다.JSON.parse
: JSON을 객체로 변환한다.
let packet = `{"sender":"김사과","receiver":"박키위","message":"키위야 오늘 저녁 같이 먹을래?","createdAt":"2023-04-12 10:10:10"}`
let obj = JSON.parse(packet)
console.log(obj)
console.log(typeof(obj))
JSON.parse
를 적용하는 이 과정을 역직렬화(deserialize)한다고 한다.JSON
은 서로 다른 프로그램 사이에서 데이터를 교환하기 위한 포맷이다.JSON
포맷은 자바스크립트를 포함한 많은 언어에서 범용적으로 사용하는 유명한 포맷이다.JSON
와 자바스크립트의 객체
는 미묘하게 다른 규칙이 있다.