首页  >  文章  >  web前端  >  如何在 Python 和 JavaScript 之间处理 JSON 交换中的日期时间对象

如何在 Python 和 JavaScript 之间处理 JSON 交换中的日期时间对象

Susan Sarandon
Susan Sarandon原创
2024-10-19 17:30:30487浏览

How to Handle Datetime Objects in JSON Exchange Between Python and JavaScript

在 Python 和 JavaScript 之间处理 JSON 交换中的日期时间对象

使用 JSON 在 Python 和 JavaScript 之间交换日期时间对象时,存在一个挑战两种语言表示日期和时间的不同方式。本文介绍了此任务的最佳实践。

Python 到 JavaScript 的转换

要在 Python 中序列化 datetime.datetime 对象以进行 JSON 传输,请使用 '具有自定义日期处理函数的 json.dumps 函数的 default' 参数:

<code class="python">date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)
json.dumps(datetime.datetime.now(), default=date_handler)</code>

此函数返回日期时间对象的 ISO 8601 格式,这是广泛接受的日期和时间表示标准。

JavaScript 到 Python 的转换

在 JavaScript 中,您可以使用自定义日期恢复函数反序列化接收到的 JSON 字符串。此函数将解析 ISO 8601 字符串并重建日期时间对象:

<code class="javascript">let date_reviver = date => new Date(date);
JSON.parse(json_string, date_reviver);</code>

综合日期处理程序

要获得更全面的方法,您可以创建自定义日期涵盖多种数据类型的处理函数:

<code class="python">def handler(obj):
    if hasattr(obj, 'isoformat'):
        return obj.isoformat()
    elif isinstance(obj, ...):
        return ...
    else:
        raise TypeError, 'Object of type %s with value of %s is not JSON serializable' % (type(obj), repr(obj))</code>

此函数确保在序列化过程中正确处理不同类型的对象。

附加说明

  • 用于日期时间对象的 ISO 8601 格式是 ISO 8601。
  • 这种方法也可以在 Python 中处理日期对象 (datetime.date)。

以上是如何在 Python 和 JavaScript 之间处理 JSON 交换中的日期时间对象的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn