使用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 格式的字串表示形式,即
在Java 中,您可以使用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中文網其他相關文章!