【问题标题】:JSON with Python: No expected validation errors with jsonschemaJSON 与 Python:jsonschema 没有预期的验证错误
【发布时间】:2020-10-29 21:49:06
【问题描述】:

我已经定义了一个模式并用它来验证 JSON 对象,但我从来没有得到预期的 ValidationError。例如:

>>> from jsonschema import validate
>>> schema = {
...   "type" : "object",
...   "properties" : {
...       "address" : {"type" : "string"},
...    },
... }
>>>
>>> schema
{'type': 'object', 'properties': {'address': {'type': 'string'}}}
>>> validate(instance={"address" : "123 Main St.", "price" : 34.99}, schema=schema)
>>> validate(instance={"address1" : "123 Main St.", "price" : 34.99}, schema=schema)
>>>
>>> validate(instance={"addresdvzdvfafczscss1" : "123 Main St.", "price" : 34.99}, schema=schema)
>>> validate(instance={"addresdvzdvfafczscss1" : "123 Main St.", "price" : 34.99}, schema=schema)
# doctest: +IGNORE_EXCEPTION_DETAIL
>>>
>>> validate(instance={"addresdvzdvfafczscss1" : "123 Main St.",}, schema=schema)  # doctest: +IGNO
RE_EXCEPTION_DETAIL
>>>
>>> type(schema)
<class 'dict'>
>>> str(schema)
"{'type': 'object', 'properties': {'address': {'type': 'string'}}}"
>>> validate(instance={"addresdvzdvfafczscss1" : 123,}, schema=schema)  # doctest: +IGNORE_EXCEPTIO
N_DETAIL
>>>

谁能看出我做错了什么?

【问题讨论】:

    标签: python json jsonschema python-jsonschema


    【解决方案1】:

    你没有说出你期望得到的错误,但我猜你希望验证抱怨“地址”属性丢失。为此,您需要使用required 关键字,因此请尝试:

    {
      "type": "object",
      "required": [ "address" ],
      "properties": {
        "address": {"type": "string"}
      }
    }
    

    您可能还想说“不允许使用除地址以外的其他属性”——这可以通过"additionalProperties": false 来完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 2019-12-03
      • 2016-04-17
      • 1970-01-01
      • 2016-09-25
      • 2017-02-04
      相关资源
      最近更新 更多