使用JSON 在Python 和JavaScript 之間轉換日期時間物件
在資料序列化和反序列化領域,Python 和JavaJava間日期時間物件的交換通過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>
透過利用此方法,您可以在序列化期間輕鬆處理各種物件類型。
附加說明
以上是如何使用 JSON 在 Python 和 JavaScript 之間轉換日期時間對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!