ホームページ >バックエンド開発 >Python チュートリアル >JSON を使用して Python と JavaScript の間で日時オブジェクトを変換する方法
JSON を使用した Python と JavaScript 間の日時オブジェクトの変換
データのシリアル化と逆シリアル化の領域では、Python と JavaScript の間での日時オブジェクトの交換が行われます。 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>
このアプローチにより、datetime オブジェクトが ISO 8601 形式でシリアル化されます。ISO 8601 形式は、日付と時刻の表現で広くサポートされています。
JavaScript での逆シリアル化
JSON.parse() など、JSON 解析を処理する JavaScript ライブラリを使用すると、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 中国語 Web サイトの他の関連記事を参照してください。