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

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

Susan Sarandon
Susan Sarandon原创
2024-10-19 17:29:30627浏览

How to Handle Datetime Objects in JSON Conversions Between Python and JavaScript?

Python 和 JavaScript 之间的 JSON datetime 转换

使用 JSON 在 Python 和 JavaScript 之间传输数据时,应特别注意处理 datetime 对象。本文探讨了在 Python 中序列化日期时间对象并在 JavaScript 中反序列化它们的最佳方法。

Python 中的序列化

利用 Python 的 json.dumps 函数中的默认参数来处理日期时间序列化:

<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)
# Output: '"2010-04-20T20:08:21.634121"' (ISO 8601 format)</code>

JavaScript 中的反序列化

在 JavaScript 中,使用 JSON.parse 函数并使用自定义 reviver 函数处理反序列化:

<code class="javascript">let date = JSON.parse(jsonString, (key, value) => {
  if (typeof value === 'string' && value.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/)) {
    return new Date(value);
  }
  return value;
});</code>

Python 中的综合默认处理程序

可以定义更具包容性的默认处理函数以适应各种数据类型:

<code class="python">import datetime

def handler(obj):
    if hasattr(obj, 'isoformat'):
        return obj.isoformat()
    elif isinstance(obj, datetime.date):
        return str(obj)  # Convert to string for date objects
    elif isinstance(obj, ...):
        return ...  # Handle other types as needed
    else:
        raise TypeError('Cannot serialize object of type {} with value {}'.format(type(obj), repr(obj)))</code>

改进的默认处理程序

改进的处理程序包括:

  • 处理日期时间和日期对象
  • 遇到不可序列化对象时输出类型和值

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

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