Python と JavaScript 間の JSON 交換で日時オブジェクトを処理する
JSON を使用して Python と JavaScript の間で日時オブジェクトを交換する場合、次のような課題が存在します。 2 つの言語で日付と時刻を表す方法が異なるためです。この記事では、このタスクのベスト プラクティスを紹介します。
Python から JavaScript への変換
JSON 送信用に Python で datetime.datetime オブジェクトをシリアル化するには、'カスタム日付ハンドラー関数を使用した json.dumps 関数の [default] パラメーター:
<code class="python">date_handler = lambda obj: ( obj.isoformat() if isinstance(obj, (datetime.datetime, datetime.date)) else None ) json.dumps(datetime.datetime.now(), default=date_handler)</code>
この関数は、日時オブジェクトの ISO 8601 形式を返します。これは、日付と時刻の表現の標準として広く受け入れられています。
JavaScript から Python への変換
JavaScript では、カスタム date reviver 関数を使用して、受信した JSON 文字列を逆シリアル化できます。この関数は ISO 8601 文字列を解析し、datetime オブジェクトを再構築します。
<code class="javascript">let date_reviver = date => new Date(date); JSON.parse(json_string, date_reviver);</code>
Comprehensive Date Handler
より包括的なアプローチとして、カスタム日付を作成できます。複数のデータ型をカバーするハンドラー関数:
<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>
この関数は、シリアル化中にさまざまな型のオブジェクトが適切に処理されることを保証します。
補足事項
以上がPython と JavaScript 間の JSON 交換で日時オブジェクトを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。