2016-08-15 71 views
0

我的定义如下。它根本不验证my_field_type_1。可能是什么原因?我正在使用jsonschema的python模块。为什么jsonschema没有从模式定义下面的定义?

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

该架构绝对不对,但我不知道你在做什么。你可以发表你想要验证的数据的几个例子吗?至少有一个应该验证,另一个不应该验证。 – Jason

回答

3

您必须嵌套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" 
+0

是的。我还发现我需要有其他属性键。但我找不到原因?你知道原因吗? – Rohanil

+2

如果您定义了一个对象类型,那么属性定义应该在“属性”键下。这是如何指定json模式。如果您定义了顶级对象类型或嵌套对象类型,它并没有什么不同。 – erosb

+0

谢谢,但我想知道为什么jsonschema允许我们以错误的方式指定模式。在我看来,它应该为我的模式抛出一些验证错误。 – Rohanil

相关问题