Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mensirrikan Objek Datetime Python untuk Pertukaran JSON yang lancar dengan JavaScript?

Bagaimana untuk Mensirrikan Objek Datetime Python untuk Pertukaran JSON yang lancar dengan JavaScript?

DDD
DDDasal
2024-10-19 17:32:02631semak imbas

How to Serialize Python Datetime Objects for Seamless JSON Exchange with JavaScript?

Menyerikan Objek Datetime Python untuk Pertukaran JSON dengan JavaScript

Apabila menggunakan JSON untuk berkomunikasi antara Python dan JavaScript, cabaran timbul dalam mengendalikan objek datetime. Untuk menangani perkara ini, Python menyediakan pengendali lalai yang boleh disesuaikan, yang boleh disepadukan dengan json.dumps untuk mendayakan pensirilan dan penyahserilan yang betul bagi objek ini.

Dalam Python, fungsi pengendali berikut memanfaatkan format ISO 8601 untuk menukar datetime objek ke dalam rentetan yang mematuhi JSON:

<code class="python">date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)</code>

Ini memastikan bahawa rentetan JSON yang terhasil adalah dalam format yang boleh dihuraikan dengan mudah oleh JavaScript.

Walau bagaimanapun, adalah penting untuk mempertimbangkan bahawa ISO 8601 format tidak menyampaikan jenis objek. Untuk pengendalian yang lebih komprehensif, fungsi pengendali yang lebih mantap dapat ditakrifkan:

<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>

Pengendali lanjutan ini 不仅提供了对日期值的格式化, 还明确了对象的类型, 使其在 JavaScript 中更易于反序列化。

Atas ialah kandungan terperinci Bagaimana untuk Mensirrikan Objek Datetime Python untuk Pertukaran JSON yang lancar dengan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn