透過 JSON 保持 Python 和 JavaScript 之間的日期時間連續性
在嘗試解決方案之前,讓我們先了解問題。我們在 Python 中有一個 datetime.datetime 對象,需要將其序列化並透過 JSON 傳送到 JavaScript。到達後,JavaScript 必須能夠將其反序列化回日期時間對象,而不會出現任何扭曲。
為了解決這個難題,json.dumps 中 JSON 的通用「預設」參數提供了一個解決方案。此參數使我們能夠為日期時間物件定義自訂序列化處理程序。
以下處理程序巧妙地處理序列化過程:
<code class="python">date_handler = lambda obj: ( obj.isoformat() if isinstance(obj, (datetime.datetime, datetime.date)) else None )</code>
應用時,此處理程序將日期時間物件轉換為ISO 8601 格式序列化期間:
<code class="python">json.dumps(datetime.datetime.now(), default=date_handler) '"2010-04-20T20:08:21.634121"'</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>
此處理程序也會產生帶有物件類型和值的改進錯誤訊息,以便更好地偵錯。包含日期類型可確保日期也能妥善處理。
以上是如何透過 JSON 保持 Python 和 JavaScript 之間的日期時間連續性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!