【问题标题】:Why doesn't jsonschema validate following definition from schema?为什么 jsonschema 不验证模式中的以下定义?
【发布时间】:2016-08-15 14:30:04
【问题描述】:

我的定义如下。而且它根本不验证my_field_type_1。可能是什么原因?我正在使用 jsonschema 的 python 模块。

definitions:
  TestRouteSchema1:
    required:
    - my_field
    properties:
      my_field:
        type: object
        my_field_type_1:
          $ref: "#/definitions/MyFieldType1"
        my_field_type_2:
          $ref: "#/definitions/MyFieldType2"

【问题讨论】:

  • 架构肯定不正确,但我不确定您要做什么。您能否发布一些您尝试验证的数据示例。至少一个应该验证,一个不应该验证。

标签: jsonschema json-schema-validator


【解决方案1】:

您必须将my_field_type_1my_field_type_1 嵌套在新的properties 键下。所以像

definitions:
  TestRouteSchema1:
    required:
    - my_field
    properties:
      my_field:
        type: object
        properties:
          my_field_type_1:
            $ref: "#/definitions/MyFieldType1"
          my_field_type_2:
            $ref: "#/definitions/MyFieldType2"

【讨论】:

  • 是的。我还发现我需要额外的属性键。但我不知道为什么?你知道原因吗?
  • 如果你定义了一个对象类型,那么属性定义应该在“properties”键下。这就是指定 json 模式的方式。定义顶级对象类型或嵌套对象类型没有区别。
  • 谢谢,但我想知道为什么 jsonschema 允许我们以错误的方式指定模式。在我看来,它应该为我的架构抛出一些验证错误。
  • 架构规范作者已做出此决定,允许在其他工具使用的同一架构文档中定义更多元数据。例如。人们可以构建自己的工具来自动生成 UI,它基于 json 模式,但还需要一些进一步的元数据。 (编辑:我并不是说这一定是正确的方法)
猜你喜欢
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多