JavaScript 객체 직렬화_javascript 기술에 대한 자세한 설명

WBOY
풀어 주다: 2016-05-16 15:19:14
원래의
1593명이 탐색했습니다.

1. 객체 직렬화란?

객체 직렬화란 객체의 상태를 문자열로 변환하는 것을 의미합니다. (초보인 제가 보기에는 일부 책에서도 이렇게 말하는 것 같은데 이해하기 쉽습니다!)

직렬화는 개체의 상태 정보를 저장하거나 전송할 수 있는 형식으로 변환하는 프로세스입니다("Baidu Encyclopedia - 직렬화", 고도로 학문적이고 약간 고급형임).

2. 객체 직렬화는 왜 있는 걸까요?

세상의 모든 것에는 존재 이유가 있습니다. 객체 직렬화가 있는 이유는 무엇입니까? 프로그래머에게는 그것이 필요하기 때문입니다. 객체 직렬화이므로 객체부터 시작해 보겠습니다.

var obj = {x:1, y:2};
로그인 후 복사

이 코드가 실행되면 객체 obj의 내용이 메모리에 저장되고, obj 자체는 이 메모리의 주소 매핑만 저장합니다. 간단히 말해서 객체 obj는 컴퓨터 전원이 켜질 때 프로그램이 메모리에 유지하는 것입니다. 프로그램이 중지되거나 컴퓨터 전원이 꺼지면 객체 obj는 더 이상 존재하지 않습니다. 그렇다면 객체 obj의 내용을 디스크에 저장하는 방법(즉, 전원이 꺼졌을 때 보관하는 방법)은 무엇입니까? 이때 객체 obj를 직렬화(serialize)해야 합니다. 즉, obj의 내용을 문자열 형식으로 변환한 후 디스크에 저장해야 합니다. 또한 HTTP 프로토콜을 통해 객체 obj의 내용을 클라이언트에 어떻게 보내나요? 예, 여전히 개체 obj를 먼저 직렬화한 다음 클라이언트가 수신된 문자열을 역직렬화하여(즉, 문자열을 개체로 복원) 해당 개체를 구문 분석해야 합니다. 이는 "바이두 백과사전 - 직렬화"에 설명된 두 가지 기능인 저장 및 전송과 정확히 같습니다.

3. JavaScript의 객체 직렬화

JSON의 전체 이름은 "JavaScript Object Notation" - JavaScript 개체 표기법입니다. ECMAScript 5는 JavaScript 객체를 직렬화하고 복원하는 내장 함수 JSON.stringify() 및 JSON.parse()를 제공합니다. 사용하기도 쉽습니다.

보시다시피 exampleStr과 exampleObj2에는 y:undefine 콘텐츠가 없습니다. 이는 다음을 보여줍니다. JSON 구문은 JavaScript 구문의 하위 집합입니다. JSON 구문에서 지원하지 않는 속성의 경우 직렬화 후에 생략됩니다. 자세한 규칙은 다음과 같습니다.

  • ① JavaScript의 5가지 기본 유형에 대해 JSON 구문은 숫자, 문자열, 부울 값 및 null이 지원되지 않는 4가지 유형을 지원합니다.
  • ②NaN, Infinity 및 -Infinity 직렬화 결과가 null입니다.
  • ③JSON 구문은 기능을 지원하지 않습니다.
  • ④RegExp 및 Error 개체 외에도 JSON 구문은 다른 모든 개체를 지원합니다.
  • ⑤날짜 객체의 직렬화 결과는 ISO 형식의 문자열이지만 JSON.parse()는 여전히 문자열 형식을 유지하며 날짜 객체로 복원하지 않습니다. >
  • ⑥JSON.stringify()는 객체의 열거 가능한 자체 속성만 직렬화할 수 있습니다. 위의 예에서 볼 수 있듯이 위의 규칙이 충족되면 객체 직렬화 및 역직렬화를 통해 객체의 깊은 복사도 완료할 수 있습니다.
  • 위의 내용은 JSON.stringify() 및 JSON.parse()의 일반적인 용도이지만 이 두 가지 방법은 그다지 간단하지 않습니다. 4. 정식 버전 JSON.stringify()

1. 소개

기본 값, 객체 또는 배열 직렬화

2. 요약

JSON.stringify(o[, 필터][, 들여쓰기])

3. 매개변수

o, JSON 문자열로 변환할 원래 값, 객체 또는 배열

필터, 선택적 매개변수, 배열 또는 함수

들여쓰기, 선택적 매개변수, 값 또는 문자열

4. 반품

필터를 통과하고 들여쓰기에 따라 형식이 지정된 o 값을 나타내는 JSON 형식의 문자열

5. 설명

 ①객체 o 자체에 toJSON() 메서드가 있는 경우 JSON.stringify()는 o의 toJSON() 메서드를 호출하고 문자열화를 위해 객체 자체 대신 메서드의 반환 값을 사용합니다.

 ②필터가 존재하고 함수인 경우 해당 함수의 반환값이 JSON.stringify() 메서드의 반환값으로 사용됩니다. 그리고 이 함수는 두 개의 매개변수를 받습니다. 첫 번째 매개변수는 빈 문자열이고 두 번째 매개변수는 객체 o입니다.

  ③필터가 존재하고 문자열 배열인 경우(배열에 숫자가 포함되어 있으면 숫자가 자동으로 문자열로 변환됨) 객체 o의 일부 속성 이름이 이 배열에 없으면 직렬화 중에 직렬화됩니다. 속성은 생략되며, 반환된 문자열의 속성 순서는 배열의 속성 순서와 일치합니다.

 4JSON.stringify()는 일반적으로 공백이나 줄 바꿈 없이 문자열을 반환합니다. 더 읽기 쉬운 문자열을 출력하려면 세 번째 매개변수를 지정해야 합니다. 지정된 세 번째 매개변수가 1에서 10 사이의 값인 경우 JSON.stringify()는 각 "레벨"의 출력에 줄 바꿈과 지정된 수의 공백을 삽입합니다. 지정된 세 번째 매개변수가 비어 있지 않은 문자열인 경우 JSON.stringify()는 줄 바꿈 문자와 문자열(처음 10자만 사용)을 삽입하여 레벨을 들여쓰기합니다.

5. 정식 버전 JSON.parse()

1. 소개

JSON 형식의 문자열 구문 분석

2. 요약

JSON.parse(s[, 부활])

3. 매개변수

s, 구문 분석할 문자열

Reviver, 선택적 매개변수, 파싱된 값을 변환하는 데 사용되는 선택적 함수 ​​

4. 반품

객체, 배열 또는 기본 값입니다. 반환 값은 s에서 구문 분석되며 부활자에 의해 수정될 수 있습니다.

5. 설명

 ①리바이버 함수가 지정되면 이 함수는 s에서 파싱된 각 원래 값(이러한 원래 값을 포함하는 객체나 배열이 아님)에 대해 한 번씩 호출됩니다. Reviver를 호출할 때 두 가지 매개변수가 있습니다. 첫 번째 매개변수는 속성 이름입니다. 즉, 개체의 속성 이름 또는 문자열로 변환된 배열 번호입니다. 두 번째 매개변수는 개체 속성 또는 배열 요소의 원래 값입니다. 또한, Reviver 함수의 반환 값은 JSON.parse()의 반환 값으로 사용됩니다.

위 내용은 자바스크립트 객체 직렬화 관련 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿