如何验证名称为“ from”的JSON字段

时间:2019-04-10 19:07:54

标签: python json telegram-bot pydantic

我想通过使用Telegram Bot API验证器来验证包含 from 字段(在Python中为保留字)的JSON对象(位于pydantic中)。因此,我的模型应如下所示:

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

但是在这种情况下不允许使用 from 关键字。

我该怎么办?

注意:与“为什么我们不能使用关键字作为属性”相比,这是不同,因为在这里我们得到了不受控制的外部JSON,无论如何我们都应该处理带有来自字段的JSON。

2 个答案:

答案 0 :(得分:4)

believe可以将from替换为from_

您可以这样做:

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

    class Config:
        fields = {
        'from_': 'from'
        }
    ...

答案 1 :(得分:1)

也许可以使用class语句来做到这一点,但是我没有快速浏览文档。您可以做的是改为使用动态模型创建。

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