ホームページ  >  記事  >  ウェブフロントエンド  >  Python と JavaScript 間の JSON 交換で日時オブジェクトを処理する方法

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

Susan Sarandon
Susan Sarandonオリジナル
2024-10-19 17:30:30492ブラウズ

How to Handle Datetime Objects in JSON Exchange Between Python and JavaScript

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>

この関数は、シリアル化中にさまざまな型のオブジェクトが適切に処理されることを保証します。

補足事項

  • 日時オブジェクトに使用される ISO 8601 形式は ISO 8601 です。
  • このアプローチでは、Python で日付オブジェクト (datetime.date) も処理できます。

以上がPython と JavaScript 間の JSON 交換で日時オブジェクトを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。