직렬화와 역직렬화

코딩덕·2023년 6월 7일

면접왕

목록 보기
10/13

직렬화와 역직렬화

✅ 직렬화

데이터 객체를 저장 매체에 저장할 수 있는 형식
                            OR
네트워크를 통해 전송할 수 있는 것으로 변환하는 것

✅ 역직렬화

저장된 데이터를 읽거나 네트워크 통신으로부터 받은 데이터를 다시 객체로 변환하는 것

직렬화가 필요한 이유

프로그래밍 언어에서 데이터를 다룰 때 메모리 구조는 크게 두 가지로 나뉜다.

  1. 값 형식 데이터 (Primitive Type)
    • int, float, char 등의 기본 데이터 타입
    • Stack 메모리에 저장되며 직접 접근 가능

  2. 참조 형식 데이터 (Reference Type)
    • 객체(Object)와 같은 참조형 데이터
    • Heap 메모리에 저장되고, Stack 영역에서 이 Heap 메모리를 참조하는 방식
  • 직렬화가 필요한 이유는 참조 형식 데이터를 직접 저장하거나 전송할 수 없기 때문!

  • 프로그램이 종료되면 Heap 메모리에 있던 객체가 사라지므로, 객체의 주소값(메모리 위치)만 저장하면 의미가 없다.

  • 직렬화를 통해 객체 데이터를 값 형식으로 변환해야 영구 저장하거나 다른 환경에서 활용할 수 있다.



데이터 직렬화 방식

1. 텍스트 기반 데이터 직렬화 (Text-Based Data Serialization)

  • 사람이 읽을 수 있는 형태.
  • 저장 공간을 많이 차지하고, 파싱(Parsing) 속도가 느림.
  • 주로 JavaScript에서 사용 (JSON 직렬화)
  • 예시: XML, CSV, JSON, YAML 등.

2. 바이너리 기반 데이터 직렬화 (Binary Data Serialization)

  • 사람이 읽을 수 없는 형태.
  • 저장 공간을 절약하고, 파싱 속도가 빠름.
  • 주로 Java에서 사용 (객체 직렬화, Protocol Buffers 등)
  • 예시: Java의 Serializable, Protobuf, MessagePack 등.

💡 JSON

클라이언트와 서버간의 HTTP 통신을 위한 텍스트 데이터 포맷
주로 API의 반환형태, 시스템을 구성하는 설정파일(package.json)에 활용

🌈 JSON.stringify(직렬화)

객체를 JSON포맷의 문자열로 변환하는 기술

클라이언트가 서버로 객체를 전송하기위해 객체를 문자열(JSON)화해야 할 때 사용

const user = {
  name: "Alice",
  age: 25,
  isAdmin: true
};

// 객체 → JSON 문자열 (직렬화)
const jsonString = JSON.stringify(user);
console.log(jsonString);
// 출력: {"name":"Alice","age":25,"isAdmin":true}

🌈 JSON.parse(역직렬화)

JSON포맷의 문자열을 객체로 변환하는 기술

백엔드 서버로부터 클라이언트에게 전송된 JSON데이터를 JS에서 객체로 사용하기 위해 사용

const user = {
  name: "Alice",
  age: 25,
  isAdmin: true
};

// JSON 문자열 → 객체 (역직렬화)
const parsedObject = JSON.parse(jsonString);
console.log(parsedObject);
// 출력: { name: 'Alice', age: 25, isAdmin: true }

💡 XML

마크업 형태를 쓰는 데이터 교환형식
주로 sitemap.xml이나 JSON처럼 데이터교환형식으로 쓰임

<XML 예시>

🤔 sitemap.xml이란?
sitemap.xml은 서비스 내의 모든 페이지들을 리스트업한 데이터이다.
검색 엔진 크롤링 로봇에게 웹 사이트에서 크롤링 해야 할 URL 을 전달한다. 각 URL과 추가 정보로서 이 URL 콘텐츠의 최종 업데이트 시점 및 업데이트 빈도, 그리고 다른 URL 대비 상대적인 중요도 정보를 여기에 담을 수 있다. 사이트 맵을 지원하는 검색 엔진은 이 정보를 사용하여 웹 사이트 크롤링을 보다 효율적으로 할 수 있게된다.
~~ 한마디로 SEO(검색엔진) 최적화 ~~


🤔 JSON과 XML의 차이

JSON과 비교했을 때 닫힌 태그가 계속해서 들어가기 때문에 JSON과 비교하면 무겁다.
또한 Javascript 객체로 변환하기 위해서 JSON보다 더 많은 노력이 필요하다.
(JSON은 JSON.parse() 면 됌)

0개의 댓글