使用 JSON 时,您可能会遇到在 Python 和 JavaScript 之间传输日期时间对象的需要。序列化此类对象可能很棘手。本文探讨了在 JSON 通信中处理 datetime 对象的最佳实践。
要在 Python 中序列化 datetime.datetime 对象,我们可以使用 json.dumps 函数和默认值范围。该参数允许我们指定一个自定义处理程序,将日期时间对象转换为 JSON 可序列化格式。
<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"'</code>
datetime 对象的 isoformat() 方法返回 ISO 8601 格式的字符串表示形式,即
在 JavaScript 中,您可以使用 Date.parse() 函数将序列化的日期时间字符串反序列化回 Date 对象:
<code class="javascript">const dateString = '"2010-04-20T20:08:21.634121"'; const date = new Date(Date.parse(dateString)); // Output: Thu Apr 20 2010 20:08:21 GMT-0400 (Eastern Daylight Time)</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>
此处理程序可以处理多种对象类型并提供更多信息性错误消息。请记住根据需要处理日期和日期时间对象。
以上是如何在 Python 和 JavaScript 之间安全地序列化和反序列化 JSON 中的日期时间对象?的详细内容。更多信息请关注PHP中文网其他相关文章!