Skip to main content

Command Palette

Search for a command to run...

직렬화 & 역직렬화 (in. javascript)

Updated
2 min read

Moved my blog! 👉 https://www.youngminss-log.com

이전 포스팅에서 Serialize(직렬화) & Deserialize(역직렬화) 에 대한 개요 느낌의 내용을 알아봤다.

이번 포스팅은 이러한 방식의 데이터 포맷방식 중, 가장 대표적인 JSON 에 대해서 알아본다.


JavaScript JSON

JSON(JavaScript Object Notation)

자바스크립트 객체문자열로 표현하는 데이터 포맷이다.

자바스크립트 객체 리터럴과 유사하지만 객체가 아닌 문자열일 뿐이며, 이를 이용해 다른 도메인과 데이터를 주고 받을 수 있게 된다.

JSON은 XML 등 다른 데이터 포맷에 비해 간결하며, 손쉽게 자바스크립트 객체로 변환할 수 있으므로, 웹 애플리케이션에서 Server - Client 간의 데이터 교환에 주로 JSON을 사용한다.


JSON 표기법

JSON은 자바스크립트 객체와 유사하지만 표기법이 조금 다르다. 표기법이 간결하긴 하지만 문법에 예민하므로, 정확히 사용하는 것이 중요하다.

{
    "name" : "Alice",
    "age" : "secret",
    "gender" : "male",
    "location" : "Incheon",
    "marriage" : false,
    "friends" : ["Lee","Shin","Jang"]
}
  • key 는 반드시 큰따옴표로 둘러싸야 한다.
  • value 값은 string, number, boolean, object, null 이 올 수 있다.
  • 키-값은 : (콜론) 기호를 이용해 구분, 키-값 쌍은 , (쉼표) 기호로 구분한다.

직렬화 역직렬화

자바스크립트의 객체 -> 문자열로 변환할 수 있다.

저번 포스팅에서 언급했지만

컴퓨터 메모리 상에 존재하는 객체(Object) -> 문자열(string) 로 변환하는 것 = 직렬화(Serialization)

문자열(string) -> 자바스크립트 객체(Object)로 반환하는 것 = 역직렬화(Deserialization) or 파싱(Parsing)

이러한 과정을 통해 데이터를 다양한 도메인 간에 주고 받을 수 있게 되는 것이다.


JS 객체를 JSON 문자열로 변경 (Serialization)

JSON.stringify(자바스크립트 객체) 메서드를 사용 자바스크립트 Object를 JSON 문자열 데이터로 변경할 수 있다.

var min = {
  name : 'min',
  age : "secret",
  gender : 'male',
  location : 'Incheon',
  marriage : false,
  friends : ['Kim', 'Lee', 'Park']
}

var serialize_json = JSON.stringify(min);

console.log("Serialize 결과 타입 : ", typeof serialize_json);
console.log("Serialize 결과 : ", serialize_json);

// Serialize 결과 타입 :  string
// Serialize 결과 :   {"name":"min","age":"secret","gender":"male","location":"Incheon","marriage":false,"friends":["Kim","Lee","Park"]}

JSON 문자열을 JS 객체로 변경하기 (Deserialization)

JSON.parse() 메서드를 사용 JSON 문자열 데이터를 자바스크립트 Object로 변경할 수 있다.

var deserialzie_object = JSON.parse(serialize_json);

console.log("Deserialize 결과 타입 : ", typeof deserialzie_object);
console.log("Deserialize 결과 : ", deserialzie_object);

// Deserialize 결과 타입 :  object
// Deserialize 결과 :  {
//   name: 'min',
//   age: "secret",
//   gender: 'male',
//   location: 'Incheon',
//   marriage: false,
//   friends: [ 'Kim', 'Lee', 'Park' ]
// }

More from this blog

[코어 자바스크립트] 02.실행 컨텍스트

실행 컨텍스트 실행 컨텍스트(execution context) 는 실행할 코드에 제공할 환경 정보들을 모아넣은 객체 ( JavaScript 가 왜 동적 언어인지 성격을 가장 잘 파악할 수 있는 개념 ) 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고, 이를 콜 스택(call stack) 에 쌓아올렸다가, 스택 자료구조처럼 가장 위에 쌓여있는 컨텍스트와 관련 있는 코드들을 실행하는 식으로 전체 코드의 환...

Sep 25, 20228 min read

[JS 딥다이브] Iterable 객체

개요 JS 개발을 하다보면, Iterator, Array-like 같은 키워드를 볼 수 있고, 이런 자료형이어야 작동하는 프로세스들을 볼 수 있었을 것이다. JS ES6+ 에는 새로운 문법이나 Built-in Object 뿐만 아니라, protocols(표현법들)도 추가되었다. 이 protocol은 일정 규칙만 충족한다면, 어떠한 객체에서 의해서도 구현될 수 있다. 이러한 프로토콜은 2가지가 있다. Iterable protocol Iter...

Aug 27, 20229 min read

npm 과 yarn 은 뭐가 다를까 ?

개요 이전 시간에 npm 과 npx 에 대해 비교해봤다. 이번에는 npm과 yarn 에 대해 비교해본다. 평소에 JS 프로젝트를 진행하면서 npm 으로 패키지를 관리하는데, 뭔가 무겁다 정도의 느낌을 받을 정도로 개발을 해왔던, 조금이라도 그런 느낌을 받았다면 이 포스팅이 조금은 도움이 되리라. 본론 📍 npm 이전 시간에 "정의"에 대해서는 정리를 하였으니 간략하게. Node Package Manager(Javascript Node...

Aug 20, 20223 min read

Youngmin's Blog

11 posts