首页 >后端开发 >Python教程 >如何使用 JSON 在 Python 和 JavaScript 之间转换日期时间对象

如何使用 JSON 在 Python 和 JavaScript 之间转换日期时间对象

DDD
DDD原创
2024-10-20 19:15:02655浏览

How to Convert Datetime Objects Between Python and JavaScript Using JSON

使用 JSON 在 Python 和 JavaScript 之间转换日期时间对象

在数据序列化和反序列化领域,Python 和 JavaScript 之间日期时间对象的交换通过 JSON 的 JavaScript 可能会带来挑战。让我们深入研究如何解决这个问题,并提出处理这种转换的最佳方法。

Python 中的序列化

将 datetime.datetime 对象从 Python 序列化为JSON,我们可以使用Python内置的json.dumps()函数。但是,为了确保正确处理日期时间对象,我们需要提供自定义“默认”参数。以下是示例代码片段:

<code class="python">import datetime
import json

date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)

json_string = json.dumps(datetime.datetime.now(), default=date_handler)
print(json_string)  # Output: "2010-04-20T20:08:21.634121"</code>

此方法可确保日期时间对象以 ISO 8601 格式序列化,该格式广泛支持日期和时间表示。

JavaScript 中的反序列化

如果您使用处理 JSON 解析的 JavaScript 库,例如 JSON.parse(),它会自动将 ISO 8601 字符串反序列化为 Date 对象。下面是它在 JavaScript 中的样子:

<code class="js">const json_object = JSON.parse(json_string);
const js_date = new Date(json_object);  // Converted to JavaScript Date object</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 是以机器可读格式表示日期和时间的标准。
  • 自定义处理程序的输出应与反序列化器期望的格式匹配。
  • 了解更多信息,请参考 Python 的 json.dumps() 和 JavaScript 的 JSON.parse() 文档。

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

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