메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것을 말한다
역직렬화(desrialization)는 그 반대로 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 변환하는 것이다.
왜 쓰는것
참조 형식 데이터를 값 형식으로 변환하여 전송,저장이 가능한 형태로 변경하기 위해
위 글만 읽어서는 이해가 어렵다고 느껴 상세한 내용은 아래에 적었습니다.
개발 언어를 무엇으로 하던 데이터들의 메모리 구조는 크게 2가지로 나뉜다.
1. 값 형식 데이터(Value Type) : int,float,char 등 데이터 들을 스택에 메모리가 쌓이고 직접 접근이 가능하다.
2. 참조 형식 데이터(Reference Type) : Array, Object , C++ 포인터 변수들이 해당되며,
해당 변수를 선언하면 힙에 메모리가 할당되고 스택에서는 이 힙 메모리를 참조하는 구조로 되어있다.
: 메모리 구조
저장,통신에는 값 형식 데이터만 가능하여, 참조 형식 데이터는 실제 데이터가 아닌 힙에 할당되어있는 메모리 번지 주소를 가지고 있기 때문에 저장,통신전에 직렬화를 통해 값 형식으로 변경하는 과정이 필요하다.
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" }