Python と JavaScript 間の JSON 変換で日時オブジェクトを処理する方法

Susan Sarandon
リリース: 2024-10-19 17:29:30
オリジナル
627 人が閲覧しました

How to Handle Datetime Objects in JSON Conversions Between Python and JavaScript?

Python と JavaScript 間の JSON 日時変換

JSON を使用して Python と JavaScript の間でデータを転送する場合、日時オブジェクトの処理に特に注意する必要があります。この記事では、Python で日時オブジェクトをシリアル化し、JavaScript でそれらを逆シリアル化するための最適なアプローチについて説明します。

Python でのシリアル化

日時シリアル化を処理するには、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 での逆シリアル化

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>
ログイン後にコピー

Python の包括的なデフォルト ハンドラー

さまざまなデータ型に対応するために、より包括的なデフォルト ハンドラー関数を定義できます:

<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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!