json 提取Pydantic验证错误消息

relj7zay  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(182)

如何从Pydantic ValidationError对象中只提取msg值?
我尝试了:

json.loads(ValidationError_obj.json()[]['msg'])

但我正在努力寻找一些简单的内置方法。

quhf5bfb

quhf5bfb1#

ValidationError.json返回JSON格式的字符串。这不是您想要的。
ValidationError.errors方法返回字典列表,其中每个字典表示ValidationError中累积的错误之一。
示例:

from pydantic import BaseModel, ValidationError

class Foo(BaseModel):
    bar: int
    baz: str

try:
    Foo.parse_obj({"bar": "definitely not an integer"})
except ValidationError as exc:
    print(exc.errors())

输出:(格式化以便于阅读)

[
  {'loc': ('bar',), 'msg': 'value is not a valid integer', 'type': 'type_error.integer'},
  {'loc': ('baz',), 'msg': 'field required', 'type': 'value_error.missing'}
]

正如您在本例中看到的,当有多个错误时,将有多个字典,每个字典都有自己的msg键。
如果您只对第一个错误感兴趣(或者您知道只有一个特定的错误),您可以这样做:

...

try:
    Foo.parse_obj({"bar": "definitely not an integer"})
except ValidationError as exc:
    print(exc.errors()[0]["msg"])

输出:value is not a valid integer

相关问题