Тип Json
Тип Json применяется в моделях Pydantic
для описания полей, которые содержат JSON-строку.
При валидации строка проверяется на корректность JSON
и при необходимости преобразуется в Python-объект.
Тип доступен через импорт из модуля pydantic.
Синтаксис
from pydantic import Json
class Model(BaseModel):
field: Json
Пример
Давайте создадим модель с полем типа Json
и передадим в неё корректную JSON-строку:
from fastapi import FastAPI
from pydantic import BaseModel, Json
app = FastAPI()
class Item(BaseModel):
data: Json
@app.post('/items/')
def create_item(item: Item):
return {'data': item.data}
Результат выполнения кода для JSON-строки '{"key": "value"}':
{"data": {"key": "value"}}
Пример
Давайте передадим некорректную JSON-строку и посмотрим, как отработает валидация:
from fastapi import FastAPI
from pydantic import BaseModel, Json
app = FastAPI()
class Item(BaseModel):
data: Json
@app.post('/items/')
def create_item(item: Item):
return {'data': item.data}
Результат выполнения кода для строки 'not a json':
{
"detail": [
{
"type": "json_invalid",
"loc": ["body", "data"],
"msg": "JSON decode error",
"input": "not a json",
"ctx": {"error": "Expecting value"}
}
]
}
Смотрите также
-
класс
BaseModel,
который является основой для создания моделей -
метод
model_validate_json,
который валидирует модель из JSON-строки -
метод
model_dump_json,
который сериализует модель в JSON-строку -
класс
SecretStr,
который скрывает конфиденциальные строковые данные