ホームページ >ウェブフロントエンド >jsチュートリアル >Python と JavaScript の間で JSON 日時をシリアル化および逆シリアル化する方法は?
Python と JavaScript の間の JSON 日時のシリアル化と逆シリアル化
Web 開発では、異なるシステム間でのデータ送信が重要です。 JSON がデータ交換形式として使用されるコンテキスト、特に JavaScript との通信を伴うシナリオで Python の datetime.datetime オブジェクトを処理するときに、一般的な課題の 1 つが発生します。
この課題に効果的に取り組むには、デフォルトを利用できます。 json.dumps 関数のパラメータ。カスタムの date_handler 関数を定義し、それをデフォルトの引数として渡すことで、datetime オブジェクトを 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 中国語 Web サイトの他の関連記事を参照してください。