Date.prototype.toJSON()
The toJSON()
method returns a string representation of
the Date
object.
Try it
Syntax
toJSON()
Return value
A string representation of the given date.
Description
Date
instances refer to a specific point in time. toJSON()
calls the object's toISOString()
method, which returns a string representing the Date
object's value. This method is generally intended to, by default, usefully serialize Date
objects during JSON serialization, which can then be deserialized using the Date()
constructor or Date.parse()
as the reviver of JSON.parse()
.
The method first attempts to convert its this
value to a primitive by calling its [@@toPrimitive]()
(with "number"
as hint), valueOf()
, and toString()
methods, in that order. If the result is a non-finite number, null
is returned. (This generally corresponds to an invalid date, whose valueOf()
returns NaN
.) Otherwise, if the converted primitive is not a number or is a finite number, the return value of this.toISOString()
is returned.
Note that the method does not check whether the this
value is a valid Date
object. However, calling Date.prototype.toJSON()
on non-Date
objects does not have well-defined semantics.
Examples
Using toJSON()
const jsonDate = new Date().toJSON();
const backToDate = new Date(jsonDate);
console.log(jsonDate); // 2015-10-26T07:46:36.611Z
Serialization round-tripping
When parsing JSON containing date strings, you can use Date.parse()
to revive them into the original date objects.
const fileData = {
author: "Maria",
title: "Date.prototype.toJSON()",
createdAt: new Date(2019, 3, 15),
updatedAt: new Date(2020, 6, 26),
};
const response = JSON.stringify(fileData);
// Imagine transmission through network
const data = JSON.parse(response, (key, value) => {
if (key === "createdAt" || key === "updatedAt") {
return Date.parse(value);
}
return value;
});
console.log(data);
Note: The reviver of JSON.parse()
must be specific to the payload shape you expect, because the serialization is lossy: it's not possible to distinguish between a string that represents a Date and a normal string.
Specifications
Specification |
---|
ECMAScript Language Specification # sec-date.prototype.tojson |
Browser compatibility
BCD tables only load in the browser