개발 R.I.P.
6.23 Dev.Feedback (JSON)
편행
2021. 6. 23. 08:46
반응형
JSON (JavaScript Object Notation)
데이터 교환을 위해 만들어진 객체 형태의 포맷 네트워크를 통해 정보를 전달할 때 사용된다.
JSON 객체는 JSON 자체를 분석하거나 값을 JSON으로 변환하는 메소드를 가지고 있다.
JSON은 직접 호출할 수 없고, 인스턴스를 생성할 수 없다. 두 개의 메서드를 가지고 있다.
Characteristics of JSON
- JSON is easy to read and write.
- It is a lightweight text-based interchange format.
- JSON is language independent.
JSON의 특징. 읽고 쓰기 쉽고, 문자를 근간으로 한 가벼운 변환 형식이며, 독립적으로 사용될 수 있다.
만일 우리가 객체로 구성된 메세지를 전달해야 한다고 할때,
const message = {
sender: "Jongwon",
receiver: "Hanbyul",
message: "한별아 너무 보고싶다..",
createdAt: "2021-06-16 20:41:51"
}
전송이 가능한 조건은 아래와 같다.
- 수신자와 발신자가 같은 프로그램을 사용할 때
- 문자열처럼 범용적으로 읽을 수 있을 때
1번인 경우를 우리가 기술적으로 해내더라도, 그것을 소비자들에게 동시 다발적으로 전달을 할 수가 없는 상황일 것이다. 이에 따른 결론으로 문자열로 변경하여 전송을 하고자 했는데,
객체 자체는 타입 변환을 이용해 String으로 변환을 하면, 객체 내용을 포함하지 않는다.
위의 결과값을 받아낼 뿐이다. 따라서 이 문제를 해결하기 위해 JSON을 사용하는 것이다.
JSON.stringfy() // 객체를 JSON으로 변환해주는 메소드
JSON.parse() // JSON을 Object type으로 변환해주는 메소드
let transferableMessage = JSON.stringify(message)
console.log(transferableMessage)
// `{"sender":"Jongwon","receiver":"Hanbyul","message":"한별아 너무 보고싶다..","createdAt":""2021-06-16 20:41:51""}`
console.log(typeof(transferableMessage))
// `string`
위의 코드에서 확인할 수 있듯, JSON.stringfy는 전달해준 객체를 직렬화(serialize)된 문자열로 변경을 해준다.
let packet = `{"sender":"Jongwon","receiver":"Hanbyul","message":"한별아 너무 보고싶다..","createdAt":""2021-06-16 20:41:51""}`
let obj = JSON.parse(packet)
console.log(obj)
/*
* {
sender: "Jongwon",
receiver: "Hanbyul",
message: "한별아 너무 보고싶다..",
createdAt: "2021-06-16 20:41:51"
}
*/
console.log(typeof(obj))
// `object`
이렇게 직렬화된 문자는 JSON.parse를 이용하여 다시 객체의 형태로 변환(deserialize)할 수 있다.
JSON의 기본 규칙
JSON을 사용하기 위해 기본적인 규칙이 있다.
반응형