簡體   English   中英

JSON 與 Python:使用 jsonschema 沒有預期的驗證錯誤

[英]JSON with Python: No expected validation errors with jsonschema

我已經定義了一個模式並用它來驗證 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
>>>

誰能看到我做錯了什么?

您沒有說出您希望得到的錯誤信息,但我猜想您希望驗證會抱怨缺少“地址”屬性。 為此,您需要使用required關鍵字,因此請嘗試:

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

您可能還想說“不允許除地址以外的其他屬性”——這可以用"additionalProperties": false來完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM