fastapi как читать вложенный json как словарь?

Я пытаюсь получить следующий JSON:

{
    "va": "{1: 5, 2:1, 3:5}"
}

в моем main.py у меня есть следующее:

from typing import Optional, Dict
from fastapi import FastAPI
from pydantic import BaseModel

class rq(BaseModel):
    va: Dict[str, str]
    

app = FastAPI(debug=True)

@app.post("/hello")
async def create_item(rq: rq):
    return 1

но я получаю

msg: значение не является допустимым dict, введите: type_error.dict

как я могу получить va as dict, чтобы перебрать его?


person mark15987    schedule 11.09.2020    source источник


Ответы (1)


Когда вы создаете модель, каждое поле на самом деле является парой ключ-значение, поэтому в вашем примере ожидается что-то вроде этого:

{
    "va": {"some":"value"}
}

Но то, что вы отправляете, это

"va": str

Поэтому я не знаю, как вы отправляете значение, но вы определенно отправляете str вместо Dict[str, str]

person Yagiz Degirmenci    schedule 11.09.2020
comment
Если вы храните в базе данных SQL Alchemy, храните в столбце типа JSON. Также убедитесь, что вы используете json.dumps перед сохранением. - person csi; 19.11.2020