inflearn logo
강의

講義

知識共有

CS知識の正典 | デザインパターン ネットワーク オペレーティングシステム データベース データ構造

データ交換形式 #1. JSONとシリアライズとデシリアライズ ★★★

직렬화 역직렬화 질문 드립니다!

7

leejihun12345467

投稿した質問数 1

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

큰돌님 안녕하세요!


직렬화의 정의를 외부 시스템에서도 사용할 수 있도록 "바이트" 형태로 데이터를 변환하는 기술이라고 설명해 주셨는데,

 

구체적으로 예시를 통해 설명을 해주실땐 "바이트"라는 용어가 사용되지 않고 JSON 형태(스트링 타입)으로 변환해서 주고받아야 한다. 라고만 설명이 되어있는 것 같아서 그럼, 정의에서 말씀하신 "바이트"는 뭐지? 라는 생각이 계속 들었던 것 같습니다!

예시를 통한 설명에서 나름대로 유추를 해보자면, 외부 시스템에서 현재 시스템의 객체를 이해하기 위해 stringfy를 통해서 JSON으로 변환해서 보내야 한다.. 그게 직렬화다 라고 하셨으니.. 그럼 정의와 매칭을 해보자면 JSON이 바이트인가? 이렇게 되는데 이건 아닌 것 같은데.. 라는 생각에 사로잡혀 있습니다 ㅠ
설명해주신 대로라면, "외부 시스템에서도 사용할 수 있도록 "스트링" 형태로 객체를 변환하는 기술"이라고 정의가 됐어야 하지 않을까? 하는 생각도 들구요!

 

결국에 전송할때는 바이트로 변환해서 해야한다는 건 어디서 들었던 것 같은데, 그게 맞는지.

그렇다면, 그럼 JSON으로 변환하는 것도 직렬화고, 그걸 또 바이트로 변환하는 것도 직렬화인지?


또 객체타입을 변환하는 예시만 있었는데, 이건 뭔가.. 메모리 주소값 형태이다 보니까 stringfy같이 스트링형태로 바꿔주는게 필요할 것 같은 느낌은 드는데.. 혹시 뿐만 아니라 원시타입도 직렬화가 필요한지? 도 궁금합니다!

면접 운영체제 기술면접

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 이지훈님.

직렬화(Serialize)는 프로그래밍 객체나 데이터를 전송하거나 저장할 수 있는 형식으로 변환하는 과정입니다. 보통 이러한 형식은 데이터 교환 포맷인 JSON 문자열이나 XML 등이 될 수 있지만, 프로그램적인 관점에서는 모두 바이트 형태로 변환되어 외부 시스템이나 파일에 저장됩니다.

  1. JSON과 직렬화:

    • JSON 형태로 변환하는 것은 데이터를 문자열 형태의 텍스트로 변환하는 것입니다.
    • 이 문자열은 다시 바이트 스트림으로 변환되어 네트워크를 통해 전송되거나 파일로 저장될 수 있습니다.
    • 따라서, 직렬화의 참된 의미는 반드시 바이트형태로의 변환을 포함하는데, 이는 문자 형태의 데이터를 실제로 이해 가능한 객체로 해석하거나 저장하기 위한 형태로 포장한 것입니다.
  2. 바이트와 JSON:

    • JSON 자체가 바이트는 아닙니다. 하지만 JSON 문자열은 내부적으로 ASCII 또는 유니코드의 텍스트 바이트로 변환될 수 있습니다. 즉, JSON이 우리가 주고받는 텍스트 형태라면, 그 텍스트는 실제로 0과 1로 구성된 바이트로 저장되거나 전송됩니다.
  3. 원시타입의 직렬화:

    • 기본적으로 자바스크립트의 원시타입(숫자, 문자열, 불리언 등)은 직렬화 과정에서 크게 변환되는 내용이 없지만, 복잡한 자료 구조(객체나 배열 등)는 구성형식이 직렬화 과정을 통해 구체적으로 명시됩니다.
    • 예를 들어, 단순한 number 리터럴이나 boolean 값은 기본적으로 JSON 형태와 유사하여 추가적인 변환이 불필요한 경우가 많습니다.

관련해서 JSON과 JS Object 게시물을 참고하시면, JSON의 본질과 자바스크립트 객체간의 차이에 대한 지식을 더 쌓으실 수 있습니다. 이 게시물은 JSON 문자열로 변환(stringify)과 자바스크립트 객체로 역직렬화(parse)를 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

안녕하세요 큰돌님!

0

66

2

REST API (Self-descriptive messages)

0

60

1

시스템 엔지니어 관련 질문입니다.

0

106

2

오버라이딩 관련하여 질문드립니다.

0

92

2

교착상태의 4가지 필요조건이 필요충분조건이 아닌 이유

0

126

1

렌더 트리, 렌더 레이어와 그래픽 레이어

0

75

2

로컬스토리지, 세션스토리지, 쿠키의 공통점

0

84

1

IPv4가 IPv6보다 빠른 경우

0

150

2

UDP가 전송계층의 역할을 못하는 건 아닌지

0

77

1

Path MTU 발견하였음에도 패킷 분할이 필요한 이유?

0

86

2

교재의 LFU 알고리즘에서 6번이 왜 히트인가요?

0

89

2

페이지 교체 알고리즘? 프레임 교체 알고리즘?

0

109

2

Static 키워드가 메모리에 올라가는 시점

0

99

2

헤더 압축부분 질문드립니다

0

94

2

공유 캐시 관련 질문 드립니다.

0

74

2

컨텍스트는 context와 contextual information으로 나눠진다는게 무슨뜻인가요?

0

252

1

회선과 대역폭의 관계

0

98

2

44강 질문

0

131

2

버스 토폴로지 질문 있씁니다

0

71

1

자바스크립트, xml 문법 관련

0

90

2

전략패턴과 의존성주입 질문

0

83

2

Model이 비즈니스 로직을 담당하나요?

0

128

2

CS 공부 하는 법

0

196

2

큰돌님 블로그에 개념정리해서 올려도될까요!

0

151

2