JSON(JavaScript Object Notation)은 데이터 교환을 위해 만들어진 객체
형태의 포맷이다
💡
객체
: 객체는 타입 변환을 이용해 String으로 변환할 경우 → 객체 내용을 포함하지 않는다.
따라서 Javascript에서 객체를 문자열로 변환하기 위해 메서드(message.toString()
)나 형변환(String(message)
)을 시도하면
⇒[object Object]
라는 결과를 리턴하게 된다.
JSON.stringify
: 객체 → JSON으로 변환한다.
JSON.parse
: JSON → 객체로 변환한다.
let transferableMessage = Json.stringify(message) //message 객체를 -> JSON으로 변환
console.log(transferableMessage)
// `{"sender":"김코딩","receiver":"박해커","message":"해커야 오늘 저녁 같이 먹을래?","createdAt":"2021-01-12 10:10:10"}`
console.log(typeof(transferableMessage))
// `string`
→ 이처럼 stringify하는 과정을 직렬화(serialize)한다고 한다.
**객체를 직렬화한 문자열**
을 통해 누군가에게 **객체**
의 내용을 보낼 수 있다.JSON.parse
을 통해!//let packet : message 객체를 -> JSON으로 변환한 결과
let packet = `{"sender":"김코딩","receiver":"박해커","message":"해커야 오늘 저녁 같이 먹을래?","createdAt":"2021-01-12 10:10:10"}`
let obj = JSON.parse(packet)
onsole.log(obj)
/*
* {
* sender: "김코딩",
* receiver: "박해커",
* message: "해커야 오늘 저녁 같이 먹을래?",
* createdAt: "2021-01-12 10:10:10"
* }
*/
console.log(typeof(obj))
// `object`
JSON.parse
를 적용하면 → 다시 객체 형태로 변환할 수 있다.JSON.parse
를 적용하는 과정을 역직렬화(serialize)한다고 한다.구분 | 자바스크립트 객체 | JSON |
---|---|---|
키 | 키는 따옴표 없이 쓸 수 있음{ key : "property" } | 반드시 쌍따옴표를 붙여야 함 '{"key":"property"}' |
문자열 값 | 작은따옴표도 사용 가능{ "key" : 'property' } | 반드시 큰따옴표로 감싸야 함 '{"key":"property"}' |
키와 값 사이 공백 | 사용 가능{"key" : 'property'} | 사용 불가능 '{"key":"property"}’ |
키-값 쌍 사이 공백 | 사용 가능{ "key":'property', num:1 } | 사용 불가능 '{"key":"property","num":1}’ |