JavaScript JSON Stringify
The JSON.stringify() Method
The JSON.stringify() method converts a JavaScript value into JSON text.
This way we can convert JavaScript variables into plain text before they can be:
- Stored in a text file
- Sent to a server over HTTP
- Transmitted between applications
Note
The JSON.stringify() method returns a plain string.
Syntax
Syntax
JSON.stringify(value, replacer, space)
| Parameter | Description |
|---|---|
| value | The JavaScript value to convert. |
| replacer | An optional function or array that selects or transforms values. |
| space | An optional number or string used to indent the JSON text. |
Converting an Object
Example
Converting a JavaScript Object into JSON text.
const person = {
name: "John",
age: 30,
city: "New York"
};
const text = JSON.stringify(person);
Try it Yourself »
Converting an Array
Example
Converting a JavaScript Object into JSON text.
const cars = ["Ford", "Volvo", "BMW"];
const text = JSON.stringify(cars);
Try it Yourself »
Converting Other Values
JSON.stringify() can convert all JavaScript values that JSON supports.
| JavaScript Value | JSON Text |
|---|---|
| String | "John" |
| Number | 42 |
| Boolean | true |
| null | null |
| Object | {"name":"John","age":30,"city":"New York"} |
| Array | ["Ford","Volvo","BMW"] |
Example
JSON.stringify("John");
JSON.stringify(42);
JSON.stringify(true);
JSON.stringify(null);
Try it Yourself »
Selecting Properties
A replacer array can choose which properties to include.
Example
const person = {
name: "John",
age: 30,
city: "New York"
};
let text = JSON.stringify(person, ["name", "city"]);
Try it Yourself »
The resulting JSON contains only the selected properties.
Transforming Values
A replacer function can modify values before they are converted.
Example
const person = {
name: "John",
age: 30
};
const text = JSON.stringify(person,
function(key, value) {
if (key == "age") {
return value + 1;
}
return value;
});
Try it Yourself »
Formatting JSON
The optional space parameter makes JSON easier to read.
Example
const person = {
name: "John",
age: 30,
city: "New York"
};
let text = JSON.stringify(person, null, 1);
Try it Yourself »
The value null selects NO replacer.
The value 1 indents each level with one space.
Unsupported Values
Some JavaScript values cannot be represented in JSON.
| Value | Result |
|---|---|
| undefined | Omitted from objects. Converted to null in arrays. |
| Functions | Omitted from objects. Converted to null in arrays. |
| Symbol | Omitted from objects. Converted to null in arrays. |
| BigInt | Throws a TypeError. |
Example
const person = {
name: "John",
greet: function() {},
age: undefined
};
document.getElementById("demo").innerHTML =
JSON.stringify(person);
Try it Yourself »
Note
The resulting JSON syntax contains only the supported values.
Circular References
JSON.stringify() cannot convert objects that contain circular references.
Example
const person = {};
person.self = person;
JSON.stringify(person);
This throws a TypeError.
Common Stringify Mistakes
Stringifying JSON Twice
Calling JSON.stringify() twice adds escaped quotation marks.
Wrong
const person = {name: "John"};
const text = JSON.stringify(person);
const textAgain = JSON.stringify(text);
Correct
const person = {name: "John"};
const text = JSON.stringify(person);
Expecting Every Property to Appear
Properties containing undefined, functions, or symbols are omitted from objects.
Example
const person = {
name: "John",
age: undefined
};
const text = JSON.stringify(person);
The result is:
{"name":"John"}