首頁  >  文章  >  web前端  >  如何在 Python 和 JavaScript 之間序列化和反序列化 JSON 日期時間?

如何在 Python 和 JavaScript 之間序列化和反序列化 JSON 日期時間?

Barbara Streisand
Barbara Streisand原創
2024-10-19 17:33:02831瀏覽

How to Serialize and Deserialize JSON Datetimes between Python and JavaScript?

在Python 和JavaScript 之間序列化和反序列化JSON Datetime

在Web 開發中,在不同系統之間傳輸資料至關重要。在使用 JSON 作為資料交換格式的上下文中處理 Python 的 datetime.datetime 物件時,特別是在涉及與 JavaScript 通訊的場景中,會出現一個常見的挑戰。

要有效應對這項挑戰,您可以利用預設值json.dumps 函數的參數。透過定義自訂 date_handler 函數並將其作為預設參數傳遞,您可以控制如何將日期時間物件序列化為 JavaScript 可以解釋的形式。

以下是date_handler 函數的範例實作:

<code class="python">date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)</code>

此函數檢查該物件是否為datetime.datetime 或datetime.date 的實例,如果是,則傳回該物件的ISO 8601格式的字串表示形式。這種格式與 JavaScript 原生的 Date 物件相容。

在 JavaScript 中,您可以使用 JSON.parse 函數解析接收到的包含序列化日期的 JSON 字串,並可以從解析的日期字串建立 Date 物件。

但是,要處理更廣泛的複雜資料類型,您可能需要一個更全面的預設處理程序函數,如下所示:

<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>

此增強的處理程序不僅會檢查日期時間對象,也可以根據需要處理其他資料類型。

請記住,將日期時間物件傳送到 JavaScript 時,它們會被序列化為字串。然後 JavaScript 根據這些字串重建 Date 物件。 ISO 8601 格式確保了相容性,並允許 Python 和 JavaScript 之間方便可靠的資料交換。

以上是如何在 Python 和 JavaScript 之間序列化和反序列化 JSON 日期時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn