Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengelakkan Pensiri Berganda Apabila Mengembalikan Data JSON dalam FastAPI?

Bagaimanakah Saya Boleh Mengelakkan Pensiri Berganda Apabila Mengembalikan Data JSON dalam FastAPI?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-28 07:50:12782semak imbas

How Can I Avoid Double Serialization When Returning JSON Data in FastAPI?

Cara Data JSON Dikendalikan oleh FastAPI

Perangkap Pensiri Berganda

Apabila mengembalikan data JSON dalam FastAPI menggunakan json.dumps(), elakkan siri berganda. FastAPI melaksanakan penyirian automatik di belakang tabir, jadi menggunakan json.dumps() secara manual boleh membawa kepada output yang tidak betul, kelihatan sebagai rentetan dan bukannya JSON.

Pilihan untuk Mengembalikan Data JSON

Pilihan 1: Pensiri Automatik

Cuma kembalikan data sebagai kamus, senarai, dsb. FastAPI akan menukarnya secara automatik kepada format serasi JSON menggunakan jsonable_encoder terbina dalam dan membungkusnya dalam JSONResponse. Pendekatan ini memastikan pesirilan dan sokongan yang betul untuk penyirian objek tidak boleh disiri seperti masa tarikh.

from datetime import date

data = [{"User": "a", "date": date.today(), "count": 1}]

@app.get('/')
async def main():
    return data

Pilihan 2: Pensiri Tersuai

Dalam senario tertentu, penyirian manual mungkin perlu. Dalam kes itu, pertimbangkan untuk mengembalikan objek Respons tersuai dengan jenis media yang ditetapkan kepada aplikasi/json.

import json

@app.get('/')
async def main():
    json_str = json.dumps(data, indent=4, default=str)
    return Response(content=json_str, media_type='application/json')

Pertimbangan Tambahan

  • Memperibadikan Kod Status: Gunakan atribut Response.status_code untuk menetapkan kod status tersuai untuk JSON respons.
  • Pengekod JSON Alternatif: Pertimbangkan untuk menggunakan pengekod JSON pihak ketiga yang lebih pantas seperti Orjson untuk prestasi yang lebih baik.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Pensiri Berganda Apabila Mengembalikan Data JSON dalam FastAPI?. 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