개발 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. 수신자와 발신자가 같은 프로그램을 사용할 때
  2. 문자열처럼 범용적으로 읽을 수 있을 때

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을 사용하기 위해 기본적인 규칙이 있다.

 

반응형