BackEnd/Node.js
직렬화(serialization)와 역직렬화(deserialization)
Bumang
2024. 8. 7. 02:19
직렬화와 역직렬화는 데이터의 저장 및 전송을 위해 사용되는 중요한 개념이다.
직렬화 (Serialization)
직렬화는 객체나 데이터 구조를 연속적인 바이트 스트림으로 변환하는 과정이랜다..
이렇게 변환된 데이터는 파일에 저장하거나 네트워크를 통해 전송할 수 있다.
직렬화된 데이터는 원본 객체의 상태를 완전히 표현하여, 나중에 이를 역직렬화해서 원본 객체를 복원할 수 있다.
예시
- 파일 저장: 객체를 파일에 저장할 때 직렬화하여 저장하고, 필요할 때 파일을 읽어 역직렬화한다.
- 네트워크 전송: 객체를 네트워크를 통해 전송할 때 직렬화하여 전송하고, 수신 측에서 역직렬화하여 원본 객체를 복원한다.
쉽게 말해, 가장 많이 쓰는 걸로는 JSON.stringify가 있다. 객체 자료구조를 string데이터로 제단(?)한다.
const user = { name: "Alice", age: 25 };
const serializedUser = JSON.stringify(user); // 직렬화: 객체를 JSON 문자열로 변환
console.log(serializedUser); // {"name":"Alice","age":25}
영상이나 이미지를 버퍼로 쪼개서 보내는 것도 직렬화의 한 예시라고 한다.
// JSON 문자열은 UTF-8 바이트 스트림으로 변환될 수 있음
const byteStream = Buffer.from(serializedUser, 'utf-8');
console.log(byteStream); // <Buffer 7b 22 6e 61 6d 65 22 3a 22 41 6c 69 63 65 22 2c 22 61 67 65 22 3a 32 35 7d>
역직렬화 (Deserialization)
역직렬화는 직렬화된 바이트 스트림을 다시 원래의 객체나 데이터 구조로 변환하는 과정이다.
이를 통해 저장된 데이터나 전송된 데이터를 원래의 형태로 복원할 수 있다.
예시
- 파일 읽기: 파일에서 읽은 직렬화된 데이터를 역직렬화하여 원본 객체를 복원한다.
- 네트워크 수신: 네트워크를 통해 수신된 직렬화된 데이터를 역직렬화하여 원본 객체를 복원한다.
const serializedUser = '{"name":"Alice","age":25}';
const user = JSON.parse(serializedUser); // 역직렬화: JSON 문자열을 객체로 변환
console.log(user); // { name: 'Alice', age: 25 }