FastAPI - 如何在使用 UploadFile 时读取 json 文件

A.P*_*apa 2 python api fastapi

from typing import List, Optional

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse
from pydantic import BaseModel

app = FastAPI(debug=True)
@app.post("/uploadfiles/")
def create_upload_files(upload_file: UploadFile = File(...)):
     json_data =  ??  upload_file ?? 
     result = model().calculate(json_data)
     return { "estimation": result}


@app.get("/")
async def main():
    content = """
<body>
<form action="/uploadfiles/" enctype="multipart/form-data" method="post">
<input name="upload_file" type="file" multiple>
<input type="submit">
</form>
</body>
    """
    return HTMLResponse(content=content)
Run Code Online (Sandbox Code Playgroud)

我有上面的 FastAPI 应用程序。我需要上传一个json文件。因此 upload_file 是一个 json 文件。model() 实例还使用一个计算方法,该方法将 json 数据作为输入。我在努力解决如何将 upload_file 从 Fast_API 解码为字典格式的问题。

我尝试了 upload_file.read() 但这返回一个字节数组

能否请你帮忙?

JPG*_*JPG 6

您可以使用标准json模块来解析内容,方法是使用上传的 JSON 文件中的json.load()--(Doc)作为

from fastapi import FastAPI, File, UploadFile
import json

app = FastAPI(debug=True)


@app.post("/uploadfiles/")
def create_upload_files(upload_file: UploadFile = File(...)):
    json_data = json.load(upload_file.file)
    return {"data_in_file": json_data}
Run Code Online (Sandbox Code Playgroud)

因此,您的变量中将包含 JSON 内容json_data

或者,您可以使用json.loads()--(Doc)函数作为

json_data = json.loads(upload_file.file.read())
Run Code Online (Sandbox Code Playgroud)