ホームページ >バックエンド開発 >Python チュートリアル >JSON を使用して Python と JavaScript の間で日時オブジェクトを変換する方法

JSON を使用して Python と JavaScript の間で日時オブジェクトを変換する方法

DDD
DDDオリジナル
2024-10-20 19:15:02655ブラウズ

How to Convert Datetime Objects Between Python and JavaScript Using JSON

JSON を使用した Python と JavaScript 間の日時オブジェクトの変換

データのシリアル化と逆シリアル化の領域では、Python と JavaScript の間での日時オブジェクトの交換が行われます。 JSON 経由の JavaScript は課題を引き起こす可能性があります。この問題にどのように対処できるかを掘り下げ、この変換を処理する最適なアプローチを紹介します。

Python でのシリアル化

datetime.datetime オブジェクトを Python からJSON の場合、Python の組み込み json.dumps() 関数を使用できます。ただし、日時オブジェクトを適切に処理するには、カスタムの「デフォルト」パラメータを提供する必要があります。サンプル コード スニペットを次に示します。

<code class="python">import datetime
import json

date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)

json_string = json.dumps(datetime.datetime.now(), default=date_handler)
print(json_string)  # Output: "2010-04-20T20:08:21.634121"</code>

このアプローチにより、datetime オブジェクトが ISO 8601 形式でシリアル化されます。ISO 8601 形式は、日付と時刻の表現で広くサポートされています。

JavaScript での逆シリアル化

JSON.parse() など、JSON 解析を処理する JavaScript ライブラリを使用すると、ISO 8601 文字列が自動的に Date オブジェクトに逆シリアル化されます。 JavaScript では次のようになります。

<code class="js">const json_object = JSON.parse(json_string);
const js_date = new Date(json_object);  // Converted to JavaScript Date object</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>

このアプローチを利用すると、シリアル化中にさまざまなオブジェクト タイプを簡単に処理できます。

補足

  • ISO 8601 は、日付と時刻を機械可読形式で表すための標準です。
  • カスタム ハンドラーの出力は、デシリアライザーで予期される形式と一致する必要があります。
  • 詳細詳細については、Python の json.dumps() および JavaScript の JSON.parse() ドキュメントを参照してください。

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

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