Cross-browser JSON Serialization in JavaScript

var obj1 = { b1: true, s1: "text string", n1: 12345, n2: null, n3: undefined, a1: [ 1,1,2,3,5,8, [13, 21, 34] ], o1: { a: [3, 2, 1], b: { c: 42, d: [ 3.14, 1.618 ] } } };
obj1.s1; // returns "text string" obj1["n1"]; // returns 12345 obj1.a1[6][1]; // returns 21 obj1["o1"]["b"]["c"]; // returns 42
- Serialization is the process of turning any object into a string.
- De-serialization turns that string back into a native object.
- JSON.stringify(obj) — converts an JavaScript object to a JSON string
- JSON.parse(str) — converts a JSON string back to a JavaScript object
var JSON = JSON || {};
// implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } };
- Strings values have quotes added.
- Child arrays or objects are recursively passed to the JSON.stringify function.
- The resulting values are added to the end of a json[] array as a “name : value” string, or just a single value for array items.
- Finally, the json array is converted to a comma-delimited list and returned within array [] or object {}brackets as necessary.
var obj1 = { b1: true, s1: "text string", n1: 12345, n2: null, n3: undefined, a1: [ 1,1,2,3,5,8, [13, 21, 34] ], o1: { a: [3, 2, 1], b: { c: 42, d: [ 3.14, 1.618 ] } } };
- This code has been intentionally kept short. It will work in most situations, but there are subtle differences with the native JSON.stringify and JSON.parse methods.
- Not every JavaScript object is supported. For example, a Date() will return an empty object, whereas native JSON methods will encode it to a date/time string.
- The code will serialize functions, e.g. var obj1 = { myfunc: function(x) {} }; whereas native JSON methods will not.
- Very large objects will throw recursion errors.
- The use of eval() in JSON.parse is inherently risky. It will not be a problem if you are calling your own web services, but calls to third-party applications could accidentally or intentionally break your page and cause security issues. If necessary, a safer (but longer and slower) JavaScript parser is available from json.org.
- JSON Serialization demonstration page
- Full JavaScript code (json-serialization.js)
- Download full code in a ZIP file
- How To Develop a jQuery Plugin
- How to Build an Auto-Expanding Textarea jQuery Plugin
Frequently Asked Questions about JavaScript JSON Serialization
What is JSON serialization in JavaScript?
JSON serialization in JavaScript is the process of converting JavaScript objects into a JSON string format. This is done using the JSON.stringify() method. The resulting JSON string can be stored or sent to a server. It’s a crucial process in web development as it allows data to be easily transferred between client and server.
How do I use JSON.stringify() in JavaScript?
JSON.stringify() is a method in JavaScript that converts a JavaScript object into a JSON string. Here’s a simple example:
let obj = {name: "John", age: 30, city: "New York"};
let myJSON = JSON.stringify(obj);
console.log(myJSON);
In this example, the JavaScript object ‘obj’ is converted into a JSON string using JSON.stringify() and stored in the variable ‘myJSON’.
Can I serialize arrays in JavaScript?
Yes, you can serialize arrays in JavaScript using the JSON.stringify() method. This method works not only with simple arrays, but also with arrays of objects. Here’s an example:
let arr = [1, 2, 3, 4];
let myJSON = JSON.stringify(arr);
console.log(myJSON);
In this example, the array ‘arr’ is converted into a JSON string.
How do I deserialize a JSON string in JavaScript?
Deserialization is the process of converting a JSON string back into a JavaScript object. This is done using the JSON.parse() method. Here’s an example:
let myJSON = '{"name":"John", "age":30, "city":"New York"}';
let obj = JSON.parse(myJSON);
console.log(obj);
In this example, the JSON string ‘myJSON’ is converted back into a JavaScript object using JSON.parse().
What happens if I try to serialize a function in JavaScript?
If you try to serialize a function in JavaScript using JSON.stringify(), the function will be ignored and won’t appear in the resulting JSON string. This is because JSON is a data format and doesn’t support JavaScript’s execution abilities.
Can I customize the serialization process in JavaScript?
Yes, you can customize the serialization process in JavaScript using a replacer function or a replacer array as the second argument to JSON.stringify(). This allows you to filter-out values or modify them during the serialization process.
What is pretty-printing in JavaScript JSON serialization?
Pretty-printing is a way to format the resulting JSON string in a more readable way. This is done by providing a number as the third argument to JSON.stringify(), which represents the number of spaces to use for indentation.
Can I serialize and deserialize dates in JavaScript?
Yes, but it requires some extra steps. By default, when you serialize a Date object in JavaScript, it will be converted to a string in ISO format. When you deserialize it, it won’t be automatically converted back to a Date object. You’ll need to manually convert it back using the new Date() constructor.
What is the toJSON() method in JavaScript?
The toJSON() method in JavaScript is used to alter the behavior of JSON.stringify(). When an object has a toJSON() method, JSON.stringify() calls it and serializes the value it returns, instead of the original object.
Can I handle large numbers during JSON serialization in JavaScript?
Yes, but with some limitations. JavaScript can accurately represent numbers up to 2^53 – 1. If you need to serialize larger numbers, you might need to convert them to strings first to avoid precision loss.
The above is the detailed content of Cross-browser JSON Serialization in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

Learning JavaScript is not difficult, but it is challenging. 1) Understand basic concepts such as variables, data types, functions, etc. 2) Master asynchronous programming and implement it through event loops. 3) Use DOM operations and Promise to handle asynchronous requests. 4) Avoid common mistakes and use debugging techniques. 5) Optimize performance and follow best practices.

Discussion on the realization of parallax scrolling and element animation effects in this article will explore how to achieve similar to Shiseido official website (https://www.shiseido.co.jp/sb/wonderland/)...

The latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.

In-depth discussion of the root causes of the difference in console.log output. This article will analyze the differences in the output results of console.log function in a piece of code and explain the reasons behind it. �...
