Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa FastAPI Mengendalikan Pensirilan JSON Berbeza Daripada Flask?

Mengapa FastAPI Mengendalikan Pensirilan JSON Berbeza Daripada Flask?

DDD
Lepaskan: 2024-12-07 07:40:16
asal
269 orang telah melayarinya

Why Does FastAPI Handle JSON Serialization Differently Than Flask?

Mengapa FastAPI Mengembalikan Data JSON Berbeza Daripada Flask?

Pendekatan Salah:

Apabila mensiri objek menggunakan json.dumps () sebelum mengembalikannya dalam FastAPI, JSON akan disirikan dua kali. Siri berganda ini menghasilkan output rentetan yang diperhatikan.

Penyelesaian 1: Pulangan Mudah untuk Penukaran JSON

Untuk membetulkannya, cuma kembalikan data seperti biasa (cth., dicts atau lists). FastAPI akan menukarnya secara automatik kepada JSON, memastikan objek datetime diwakili dengan sewajarnya.

Contoh:

@app.get('/')
async def main():
    d = [
        {"User": "a", "date": date.today(), "count": 1},
        {"User": "b", "date": date.today(), "count": 2},
    ]
    return d
Salin selepas log masuk

Output:

[
  {
    "User": "a",
    "date": "2023-01-09",
    "count": 1
  },
  {
    "User": "b",
    "date": "2023-01-09",
    "count": 2
  }
]
Salin selepas log masuk
Salin selepas log masuk

Penyelesaian 2: Respons Tersuai untuk JSON Eksplisit Pensirian

Jika perlu, anda boleh mensiri objek secara manual sebelum mengembalikannya dalam objek Respons tersuai. Tetapkan media_type kepada 'application/json' dan enkodkan data bersiri sendiri.

Contoh:

import json

@app.get('/')
async def main():
    d = [
        {"User": "a", "date": date.today(), "count": 1},
        {"User": "b", "date": date.today(), "count": 2},
    ]
    json_str = json.dumps(d, indent=4, default=str)
    return Response(content=json_str.encode('utf-8'), media_type='application/json')
Salin selepas log masuk

Output:

[
  {
    "User": "a",
    "date": "2023-01-09",
    "count": 1
  },
  {
    "User": "b",
    "date": "2023-01-09",
    "count": 2
  }
]
Salin selepas log masuk
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa FastAPI Mengendalikan Pensirilan JSON Berbeza Daripada Flask?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan