ホームページ >バックエンド開発 >Python チュートリアル >Python と JavaScript の間で JSON の日時オブジェクトを安全にシリアル化および逆シリアル化する方法は?
JSON を使用する場合、Python と JavaScript の間で日時オブジェクトを転送する必要が生じる場合があります。このようなオブジェクトのシリアル化は難しい場合があります。この記事では、JSON 通信で datetime オブジェクトを処理するためのベスト プラクティスについて説明します。
Python で datetime.datetime オブジェクトをシリアル化するには、デフォルトの json.dumps 関数を使用できます。パラメータ。このパラメーターを使用すると、日時オブジェクトを JSON シリアル化可能な形式に変換するカスタム ハンドラーを指定できます。
<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) # Output: '"2010-04-20T20:08:21.634121"'</code>
日時オブジェクトの isoformat() メソッドは、ISO 8601 形式の文字列表現を返します。
JavaScript では、Date.parse() 関数を使用して、シリアル化された日時文字列を Date オブジェクトに逆シリアル化できます。
<code class="javascript">const dateString = '"2010-04-20T20:08:21.634121"'; const date = new Date(Date.parse(dateString)); // Output: Thu Apr 20 2010 20:08:21 GMT-0400 (Eastern Daylight Time)</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>
このハンドラーは複数のオブジェクト タイプを処理でき、より有益なエラー メッセージを提供します。必要に応じて、日付オブジェクトと日時オブジェクトの両方を処理することを忘れないでください。
以上がPython と JavaScript の間で JSON の日時オブジェクトを安全にシリアル化および逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。