직렬화란?

Gavri·2022년 10월 2일

데이터 직렬화(serializtion)은 무엇일까?

메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것을 말한다

역직렬화(desrialization)는 그 반대로 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 변환하는 것이다.

왜 쓰는것

그러면 직렬화는 왜 쓰는 것일까

참조 형식 데이터를 값 형식으로 변환하여 전송,저장이 가능한 형태로 변경하기 위해

위 글만 읽어서는 이해가 어렵다고 느껴 상세한 내용은 아래에 적었습니다.

개발 언어를 무엇으로 하던 데이터들의 메모리 구조는 크게 2가지로 나뉜다.

1. 값 형식 데이터(Value Type) : int,float,char 등 데이터 들을 스택에 메모리가 쌓이고 직접 접근이 가능하다.

2. 참조 형식 데이터(Reference Type) : Array, Object , C++ 포인터 변수들이 해당되며,
해당 변수를 선언하면 힙에 메모리가 할당되고 스택에서는 이 힙 메모리를 참조하는 구조로 되어있다.

메모리 구조
: 메모리 구조

저장,통신에는 값 형식 데이터만 가능하여, 참조 형식 데이터는 실제 데이터가 아닌 힙에 할당되어있는 메모리 번지 주소를 가지고 있기 때문에 저장,통신전에 직렬화를 통해 값 형식으로 변경하는 과정이 필요하다.

JSON 직렬화 예제

const obj = {
age : 20,
name : "jun",
};
--------
// obj 를 불러 사용하면 메모리 번지를 가르키고 있다
// { age : 20 , name : "jun" }은 힙에 저장되어 있으며,
// obj는 0x00045523 이런 형태로 힙 메모리 주소를 가지고 있다.
console.log(obj);

// JSON 직렬화 메소드
JSON.stringify(obj); // '{"age":20,"name":"jun"}' JSON 

// JSON 역직렬화 메소드
const obj1 = JSON.parse('{"age":20,"name":"jun"}');

console.log(obj1); // { age : 20 , name : "jun" }

profile
모든건 기록으로

0개의 댓글