search
HomeWeb Front-endJS TutorialDetailed explanation of JavaScript object serialization_javascript skills

1. What is object serialization?

Object serialization refers to converting the state of an object into a string (from my rookie understanding, it seems that some books also say this, it is easy to understand!);

Serialization is the process of converting the state information of an object into a form that can be stored or transmitted (from "Baidu Encyclopedia - Serialization", highly academic and slightly high-end);

2. Why is there object serialization?

Everything in the world has a reason for its existence. Why is there object serialization? Because programmers need it. Since it is object serialization, let’s start with an object:

var obj = {x:1, y:2};

When this code is run, the contents of the object obj will be stored in a piece of memory, and obj itself only stores the mapping of the address of this memory. Simply put, object obj is something that our program maintains in memory when the computer is powered on. If our program stops or the computer is powered off, object obj will no longer exist. So how to save the contents of object obj on the disk (that is, keep it when the power is out)? At this time, you need to serialize the object obj, that is, convert the content of obj into a string form, and then save it on the disk. In addition, how do we send the content of object obj to the client through HTTP protocol? Yes, you still need to serialize the object obj first, and then the client deserializes the received string (that is, restores the string to an object) to parse out the corresponding object. These are exactly the two functions described in "Baidu Encyclopedia - Serialization" - storage and transmission.

3. Object serialization in JavaScript

The full name of JSON is "JavaScript Object Notation" - JavaScript object notation. ECMAScript 5 provides built-in functions JSON.stringify() and JSON.parse() to serialize and restore JavaScript objects. They're also easy to use:

As you can see, there is no y:undefined content in exampleStr and exampleObj2. This shows that: JSON syntax is a subset of JavaScript syntax. It cannot represent all values ​​in JavaScript. For attributes that are not supported by JSON syntax, they will be omitted after serialization. The detailed rules are as follows:

  • ① For the five primitive types in JavaScript, JSON syntax supports four types: numbers, strings, Boolean values, and null. Undefined is not supported;
  • ②The result of NaN, Infinity and -Infinity serialization is null;
  • ③JSON syntax does not support functions;
  • ④In addition to RegExp and Error objects, JSON syntax supports all other objects;
  • ⑤The result of serialization of date objects is strings in ISO format, but JSON.parse() still retains their string form and will not restore them to date objects;
  • ⑥JSON.stringify() can only serialize the enumerable own properties of the object;

As can be seen from the above example, if the above rules are met, deep copying of objects can also be completed through object serialization and deserialization.

The above are the common uses of JSON.stringify() and JSON.parse(), but these two methods are not just that simple:

4. Full version JSON.stringify()

1. Introduction

Serialize primitive value, object or array

2. Summary

JSON.stringify(o[, filter][, indent])

3. Parameters

o, the original value, object or array to be converted into a JSON string

Filter, optional parameter, an array or function

indent, optional parameter, a value or a string

4. Return

A string in JSON format, representing the value of o, which has passed the filter and is formatted according to indent

5. Description

 ①When object o itself has a toJSON() method, JSON.stringify() will call o's toJSON() method and use the return value of the method instead of the object itself for stringification;

 ②If filter exists and is a function, the return value of the function will be used as the return value of the JSON.stringify() method. And this function receives two parameters, the first parameter is an empty string, and the second parameter is the object o.

 ③If filter exists and is a string array (if the array contains numbers, the numbers will be automatically converted to strings), then if some attribute names of object o are not in this array, these will be serialized during serialization. The attributes are omitted, and the order of the attributes in the returned string will be consistent with the order of the attributes in the array;

 ④JSON.stringify() usually returns a string without any spaces or newlines. If you want to output a more readable string, you need to specify the third parameter. If the specified third parameter is a value between 1 and 10, JSON.stringify() will insert newlines and the specified number of spaces in the output of each "level". If the specified third parameter is a non-empty string, JSON.stringify() will insert a newline character and the string (only the first ten characters are taken) to indent the level;

5. Full version JSON.parse()

1. Introduction

Parse strings in JSON format

2. Summary

JSON.parse(s[, reviver])

3. Parameters

s, the string to be parsed

Reviver, optional parameter, optional function used to convert parsed values ​​

4. Return

An object, array or primitive value. The return value is parsed from s (and may be modified by reviver);

5. Description

 ①If the reviver function is specified, this function will be called once for each original value parsed from s (not the object or array containing these original values). There are two parameters when calling reviver. The first parameter is the attribute name - the attribute name of the object or the array number converted into a string. The second parameter is the original value of the object attribute or array element. Moreover, the return value of the reviver function will be used as the return value of JSON.parse();

The above is the relevant content about JavaScript object serialization. I hope it will be helpful to everyone's learning.

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Python vs. JavaScript: The Learning Curve and Ease of UsePython vs. JavaScript: The Learning Curve and Ease of UseApr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python vs. JavaScript: Community, Libraries, and ResourcesPython vs. JavaScript: Community, Libraries, and ResourcesApr 15, 2025 am 12:16 AM

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

From C/C   to JavaScript: How It All WorksFrom C/C to JavaScript: How It All WorksApr 14, 2025 am 12:05 AM

The shift from C/C to JavaScript requires adapting to dynamic typing, garbage collection and asynchronous programming. 1) C/C is a statically typed language that requires manual memory management, while JavaScript is dynamically typed and garbage collection is automatically processed. 2) C/C needs to be compiled into machine code, while JavaScript is an interpreted language. 3) JavaScript introduces concepts such as closures, prototype chains and Promise, which enhances flexibility and asynchronous programming capabilities.

JavaScript Engines: Comparing ImplementationsJavaScript Engines: Comparing ImplementationsApr 13, 2025 am 12:05 AM

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

Beyond the Browser: JavaScript in the Real WorldBeyond the Browser: JavaScript in the Real WorldApr 12, 2025 am 12:06 AM

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Apr 11, 2025 am 08:23 AM

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

This article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base

JavaScript: Exploring the Versatility of a Web LanguageJavaScript: Exploring the Versatility of a Web LanguageApr 11, 2025 am 12:01 AM

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.