[자료구조/알고리즘] JSON

KIM DA MI·2023년 4월 12일
0
post-thumbnail

1. JSON이란?

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

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

    • 메시지를 담고 있는 객체 message

      const message = {
        sender: "김사과",
        receiver: "박키위",
        message: "키위야 오늘 저녁 같이 먹을래?",
        createdAt: "2023-04-12 10:10:10"
      }
    • 메시지 객체가 전송할 수 있게 하려면, 메시지를 보내는 발신자와 메시지를 받는 수신자가 같은 프로그램을 사용하거나, 문자열처럼 범용적으로 읽을 수 있는 형태여야 한다.

    • 전송할 수 있는 조건 (transferable condition)

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

  • 객체는 타입 변환을 이용해 String으로 변환할 경우 객체 내용을 포함하지 않는다.
    JavaScript에서 객체를 문자열로 변환하기 위해 메서드(message.toString())나 형 변환(String(message))을 시도하면, [object Object] 라는 결과를 리턴한다.
    • 이 문제를 해결하는 방법은 객체를 JSON의 형태로 변환하거나 JSON을 객체의 형태로 변환하는 방법이다.

객체를 JSON의 형태로 변환하는 메서드

  • JSON.stringify : 객체를 JSON으로 변환한다.

    let transferableMessage = JSON.stringify(message)
    
    console.log(transferableMessage) 
  • 코드 실행 결과
    • stringify하는 이 과정을 직렬화(serialize)한다고 한다.
    • JSON으로 변환된 객체의 타입은 문자열이다.
    • 발신자는 객체를 직렬화한 문자열을 누군가에게 객체의 내용을 보낼 수 있다.

JSON을 객체의 형태로 변환하는 메서드

  • JSON.parse : JSON을 객체로 변환한다.

    let packet = `{"sender":"김사과","receiver":"박키위","message":"키위야 오늘 저녁 같이 먹을래?","createdAt":"2023-04-12 10:10:10"}`
    let obj = JSON.parse(packet)
    
    console.log(obj)
    
    console.log(typeof(obj))
  • 코드 실행 결과
    • JSON.parse를 적용하는 이 과정을 역직렬화(deserialize)한다고 한다.

직렬화와 역직렬화 모식도

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



2. JSON의 기본 규칙

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

0개의 댓글