Как проверить поле JSON с именем "from" - PullRequest
1 голос
/ 10 апреля 2019

Я хочу проверить объект JSON (он находится в Telegram Bot API ), который содержит поле из (которое является зарезервированным словом в Python), используя pydantic валидатор.Поэтому моя модель должна выглядеть следующим образом:

class Message(BaseModel):
  message_id: int
  from: Optional[str]
  date: int
  chat: Any
  ...

Но использование ключевого слова из в этом контексте недопустимо.

Как я могу это сделать?

Примечание: это отличается от "Почему мы не можем использовать ключевые слова в качестве атрибутов", потому что здесь мы получаем внешний JSON, который мы не контролируем, и в любом случае мы должны обрабатывать JSON с из поля.

Ответы [ 2 ]

4 голосов
/ 10 апреля 2019

Я считаю вы можете заменить from на from_.

Вы можете сделать это так:

class Message(BaseModel):
    message_id: int
    from_: Optional[str]
    date: int
    chat: Any

    class Config:
        fields = {
        'from_': 'from'
        }
    ...
1 голос
/ 10 апреля 2019

Возможно, есть способ сделать это с помощью оператора class, но я не увидел ничего в быстром просмотре документации.Вместо этого вы можете использовать динамическое создание модели.

fields = {
    'message_id': (int,),
    'from': (Optional[str], ...),
    'date': (int, ...),
    'chat': (Any, ...)
 }
 Message = create_model("Message", **fields)
...