네트워크를 통해 어떤 객체의 내용을 다른 프로그램에게 전송할 경우를 가정
const message = {
sender: "김코딩",
receiver: "박해커",
message: "해커야 오늘 저녁 같이 먹을래?",
createdAt: "2021-01-12 10:10:10"
}
위와 같은 객체 코드를 전송하려면
전송 가능한 조건
1. 발신자와 수신자가 같은 프로그램을 사용하거나
2. 문자열처럼 범용적으로 읽을 수 있는 형태여야함
하지만 객체는 타입 변환을 이용해 String
으로 변환할 경우 객체 내용을 포함하지 않음
문자열 변환 message.toString()
형변환 String(message)
를 시도할 경우 [object Object]라는 결과를 리턴할 뿐임
JSON.stringify
: 객체 -> JSONlet transferableMessage = JSON.stringify(message)
console.log(transferableMessage)
// `{"sender":"김코딩","receiver":"박해커","message":"해커야 오늘 저녁 같이 먹을래?","createdAt":"2021-01-12 10:10:10"}`
console.log(typeof(transferableMessage))
// `string`
stringif하는 과정을 직렬화(serialize)라고 함
JSON으로 변환된 객체의 타입은 문자열
JSON.parse
: 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`
JSON.parse를 적용하는 과정을 역직렬화(deserialize)라고 함
JSON포맷은 JS말고도 많은 언어에서 범용적으로 사용하는 포맷임