Temporal.Duration.prototype.toJSON()

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

toJSON() 方法用于 Temporal.Duration 实例,它返回一个字符串,表示此持续时间的格式与调用 toString() 时使用的 ISO 8601 格式相同。此方法旨在由 JSON.stringify() 隐式调用。

语法

js
toJSON()

参数

无。

返回值

一个字符串,表示给定持续时间的 ISO 8601 格式,具有表示持续时间所需的尽可能高的亚秒精度。

描述

Temporal.Duration 对象被字符串化时,JSON.stringify() 会自动调用 toJSON() 方法。此方法通常旨在默认情况下在 JSON 序列化过程中有用地序列化 Temporal.Duration 对象,然后可以使用 JSON.parse() 的复原函数 Temporal.Duration.from() 进行反序列化。

示例

使用 toJSON()

js
const duration = Temporal.Duration.from({ hours: 1, minutes: 30, seconds: 15 });
const durationStr = duration.toJSON(); // 'PT1H30M15S'
const d2 = Temporal.Duration.from(durationStr);

JSON 序列化和解析

本示例展示了如何无需额外努力即可将 Temporal.Duration 序列化为 JSON,以及如何将其解析回来。

js
const duration = Temporal.Duration.from({ hours: 1, minutes: 30, seconds: 15 });
const jsonStr = JSON.stringify({ data: duration }); // '{"data":"PT1H30M15S"}'
const obj = JSON.parse(jsonStr, (key, value) => {
  if (key === "data") {
    return Temporal.Duration.from(value);
  }
  return value;
});

规范

规范
Temporal
# sec-temporal.duration.prototype.tojson

浏览器兼容性

另见