[자료구조/알고리즘] 재귀 (JSON)

hosik kim·2021년 10월 6일
0

With CodeStates

목록 보기
5/45
post-thumbnail

💡 JSON

📌JSON의 탄생 배경


  • JSON은 JavaScript Object Notation의 줄임말이다.
  • 데이터 교환을 위해 만들어진 객체 형태의 포맷이다.

❔객체를 어떻게 전송할 수 있을까❔
네트워크를 통해, 어떤 객체 내용을 다른 프로그램에게 전송한다고 가정,
이 객체 내용을 일종의 메신저 혹은 채팅 프로그램에서 쓰는 하나의 메세지라고 한다면

const message = {
  sender: "김코딩",
  receiver: "박해커",
  message: "해커야 오늘 저녁 같이 먹을래?",
  createAt: "2021-01-12 10:10:10"
}
//[코드] 메세지를 담고 있는 객체 message

전송 가능한 조건 (transferable condition)

  • 수신자(reciever)와 발신자(sender)가 같은 프로그램을 사용한다.
  • 또는, 문자열처럼 범용적으로 읽을 수 있어야한다.

이 문제를 해결하는 방법은 객체를 JSON의 형태로 변환하거나, JSON을 객체의 형태로 변환하는 방법이다.

  • JSON.stringify : Object type을 JSON으로 변환
  • JSON.parse : JSON을 Object type으로 변환
    JSON 공식 문서
let transferableMesage = JSON.stringify(message)
console.log(transferableMesage) 
//`{"sender":"김코딩","receiver":"박해커","message":"해커야 오늘 저녁 같이 먹을래?","createdAt":"2021-01-12 10:10:10"}`
console.log(typeof(transferableMesage)) // 'string'
//[코드] message 객체를 JSON으로 변환하는 메소드 JSON.stringfiy

stringify하는 이 과정을 직렬화(serialize)한다고 한다.

JSON으로 변환된 객체의 타입은 문자열이다. 발신자는 객체를 직렬화한 문자열을
누군가에 객체의 내용을 보낼 수 있다.

❔그렇다면 수신자는 이 문자열 메세지를 어떻게 다시 객체의 형태로 만들 수 있을까❔
JSON.stringify와 정반대의 작업을 수행하는 JSON.parse를 사용하여 만들 수 있다.

let packet = `{"sender":"김코딩","receiver":"박해커","message":"해커야 오늘 저녁 같이 먹을래?","createAt":"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에 메소드 JSON.parse를 적용하면 다시 객체의 형태로 변환할 수 있다.

JSON.parse를 적용하는 이 과정을 역직렬화(deserialize)한다고 한다.

  • 이 처럼, JSON은 서로 다름 프로그램 사에서 데이터를 교환하기 위한 포맷이다
  • JSON 포맷은 자바스크립트을 포함한 많은 언어에서 범용적으로 사용하는 유명한 포맷이다.

JSON의 기본 규칙


: 자바스크립트의 객체와는 다른 미묘하게 다른 규칙이 있다.

자바스크립트 객체JSON
키는 따옴표 없이 쓸 수 있음반드시 큰따옴표를 붙여야 함
문자열 값문자열 값은 어떠한 형태의 따옴표도 사용 가능반드시 큰따옴표를 붙여야 함
  • 또한 JSON은 키와 값 사이, 그리고 키-값 쌍 사이에는 공백이 있어서는 안된다.
profile
안되면 될 때까지👌

0개의 댓글