首页 > web前端 > js教程 > 正文

如何在 Python 和 JavaScript 之间序列化和反序列化 JSON 日期时间?

Barbara Streisand
发布: 2024-10-19 17:33:02
原创
829 人浏览过

How to Serialize and Deserialize JSON Datetimes between Python and JavaScript?

在 Python 和 JavaScript 之间序列化和反序列化 JSON Datetime

在 Web 开发中,在不同系统之间传输数据至关重要。在使用 JSON 作为数据交换格式的上下文中处理 Python 的 datetime.datetime 对象时,特别是在涉及与 JavaScript 通信的场景中,会出现一个常见的挑战。

要有效应对这一挑战,您可以利用默认值json.dumps 函数的参数。通过定义自定义 date_handler 函数并将其作为默认参数传递,您可以控制如何将日期时间对象序列化为 JavaScript 可以解释的形式。

以下是 date_handler 函数的示例实现:

<code class="python">date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)</code>
登录后复制

此函数检查该对象是否是 datetime.datetime 或 datetime.date 的实例,如果是,则返回该对象的 ISO 8601 格式的字符串表示形式。这种格式与 JavaScript 原生的 Date 对象兼容。

在 JavaScript 中,您可以使用 JSON.parse 函数解析接收到的包含序列化日期的 JSON 字符串,并可以从解析的日期字符串创建 Date 对象。

但是,要处理更广泛的复杂数据类型,您可能需要一个更全面的默认处理程序函数,如下所示:

<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>
登录后复制

此增强的处理程序不仅会检查日期时间对象,还可以根据需要处理其他数据类型。

请记住,将日期时间对象发送到 JavaScript 时,它们会被序列化为字符串。然后 JavaScript 根据这些字符串重建 Date 对象。 ISO 8601 格式确保了兼容性,并允许 Python 和 JavaScript 之间方便可靠的数据交换。

以上是如何在 Python 和 JavaScript 之间序列化和反序列化 JSON 日期时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!