JSON を使用して Python と JavaScript の間でデータを転送する場合、日時オブジェクトの処理に特に注意する必要があります。この記事では、Python で日時オブジェクトをシリアル化し、JavaScript でそれらを逆シリアル化するための最適なアプローチについて説明します。
日時シリアル化を処理するには、Python の json.dumps 関数のデフォルト パラメーターを利用します。
<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"' (ISO 8601 format)</code>
JavaScript では、JSON.parse 関数を使用し、カスタム Reviver 関数で逆シリアル化を処理します:
<code class="javascript">let date = JSON.parse(jsonString, (key, value) => { if (typeof value === 'string' && value.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/)) { return new Date(value); } return value; });</code>
さまざまなデータ型に対応するために、より包括的なデフォルト ハンドラー関数を定義できます:
<code class="python">import datetime def handler(obj): if hasattr(obj, 'isoformat'): return obj.isoformat() elif isinstance(obj, datetime.date): return str(obj) # Convert to string for date objects elif isinstance(obj, ...): return ... # Handle other types as needed else: raise TypeError('Cannot serialize object of type {} with value {}'.format(type(obj), repr(obj)))</code>
改良されたハンドラーには以下が含まれます:
以上がPython と JavaScript 間の JSON 変換で日時オブジェクトを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。