jsonschema的dependentSchema未能验证。

4

我正在尝试学习JSON Schema,但是有些事情对我来说行不通。 我正在尝试运行这个例子:http://json-schema.org/understanding-json-schema/reference/conditionals.html#id4,用于dependentSchemas,但它无法通过验证。

我正在使用以下架构:

check_schema = {"$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "credit_card": { "type": "number" }
  },
  "required": ["name"],
  "dependentSchemas": {
    "credit_card": {
      "properties": {
        "billing_address": { "type": "string" }
      },
      "required": ["billing_address"]
    }
  }
}

并且这个 JSON 缺少键 billing_address,因此应该引发错误:

check_dict={
  "name": "John Doe",
  "credit_card": 5555555555555555
}

但是当我使用jsonschema.validate(dic_check, schema_check)(使用Python语言,jsonschema软件包版本4.2.1)时,验证通过且没有问题。

我做错了什么?


看起来你在这里做得一切都对。请提供一个小的代码块,以完全重现问题好吗? - Relequestual
1个回答

4
如果您使用的实现不支持至少draft2019-09的规范,dependentSchemas将不会被识别为一个关键字。在早期版本(draft7及之前),该关键字被称为dependencies,具有相同的语法(实际上,dependencies被拆分成了dependentSchemasdependentRequired两个关键字)。
详细信息在您链接的页面上描述,https://json-schema.org/understanding-json-schema/reference/conditionals.html#dependentschemas
如果您仍然认为您的内容应该有效,请建议您在实现的问题队列中开启错误报告。

我尝试改为 dependencies,但没有成功。重新安装一次包后,它就可以工作了。谢谢。 - SaBe
1
我曾经遇到过同样的问题,不确定是pip/homebrew冲突引起的。执行brew reinstall jsonschemabrew link --overwrite jsonschema命令解决了这个问题。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接