Date.prototype.toJSON()

基线 广泛可用

此功能已相当成熟,并在许多设备和浏览器版本中运行。它自 2015 年 7 月.

报告反馈

试试

语法

toJSON() 方法是 Date 实例的方法,它返回一个字符串,该字符串表示此日期,格式与 toISOString() 中的 ISO 格式相同。
toJSON()

js

参数

无。

返回值

描述

一个字符串,表示给定日期,格式为 日期时间字符串格式,并根据世界标准时间,或者当日期 无效 时为 null。对于有效日期,返回值与 toISOString() 的返回值相同。

toJSON() 方法在对 Date 对象进行序列化时,会由 JSON.stringify() 自动调用。此方法通常旨在默认情况下在 JSON 序列化期间以有效方式序列化 Date 对象,然后可以使用 Date() 构造函数作为 JSON.parse() 的恢复器进行反序列化。

该方法首先尝试通过按顺序调用其 [Symbol.toPrimitive]()(提示为 "number")、valueOf()toString() 方法,将 this转换为基本类型。如果结果是 非有限 数字,则返回 null。(这通常对应于一个无效的日期,其 valueOf() 返回 NaN。)否则,如果转换后的基本类型不是数字,或者是一个有限数字,则返回 this.toISOString() 的返回值。

示例

请注意,该方法不会检查 this 值是否为有效的 Date 对象。但是,除非对象的数字基本类型表示形式为 NaN,或者对象也具有 toISOString() 方法,否则在非 Date 对象上调用 Date.prototype.toJSON() 会失败。

toJSON() 方法是 Date 实例的方法,它返回一个字符串,该字符串表示此日期,格式与 toISOString() 中的 ISO 格式相同。
const jsonDate = new Date(0).toJSON(); // '1970-01-01T00:00:00.000Z'
const backToDate = new Date(jsonDate);

console.log(jsonDate); // 1970-01-01T00:00:00.000Z

使用 toJSON()

序列化往返

toJSON() 方法是 Date 实例的方法,它返回一个字符串,该字符串表示此日期,格式与 toISOString() 中的 ISO 格式相同。
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 new Date(value);
  }
  return value;
});

console.log(data);

解析包含日期字符串的 JSON 时,可以使用 Date() 构造函数将它们恢复为原始日期对象。

规范

注意: JSON.parse() 的恢复器必须特定于你期望的有效负载形状,因为序列化是不可逆的:无法区分表示日期的字符串和普通字符串。
规范
# ECMAScript 语言规范

浏览器兼容性

sec-date.prototype.tojson

另请参见