РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
177 of 307 menu

Метод model_validate_json

Метод model_validate_json применяется к классу модели и превращает JSON-строку в готовый объект Pydantic. Первым параметром передаётся строка с JSON-данными. Метод проверяет типы полей, обязательность значений и пользовательские правила валидации. Если данные не соответствуют модели, выбрасывается исключение ValidationError.

Синтаксис

Model.model_validate_json(json_string)

Пример

Давайте создадим модель User и получим объект из JSON-строки:

from pydantic import BaseModel class User(BaseModel): name: str age: int res = User.model_validate_json('{"name": "abcde", "age": 25}') print(res) print(type(res))

Результат выполнения кода:

name='abcde' age=25 <class '__main__.User'>

Пример

Давайте передадим JSON с неверным типом поля и посмотрим на ошибку:

from pydantic import BaseModel, ValidationError class User(BaseModel): name: str age: int try: res = User.model_validate_json('{"name": "abcde", "age": "hello"}') except ValidationError as e: print(e)

Результат выполнения кода:

1 validation error for User age Input should be a valid integer, unable to parse string as an integer [type=int_parsing, input_value='hello', input_type=str]

Пример

Давайте используем метод внутри обработчика FastAPI, когда JSON приходит как строка, а не как тело запроса:

from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): name: str age: int @app.post('/user/') def create_user(raw: str): user = User.model_validate_json(raw) return {'name': user.name, 'age': user.age}

Результат выполнения кода для строки '{"name": "abcde", "age": 25}':

{"name": "abcde", "age": 25}

Смотрите также

  • метод model_validate,
    который проверяет словарь и создаёт экземпляр модели
  • метод model_dump,
    который превращает модель в словарь
  • метод model_dump_json,
    который превращает модель в JSON-строку
  • класс BaseModel,
    который является основой для всех моделей Pydantic
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить