JSON模式中的变量属性

时间:2014-08-21 07:42:47

标签: json jsonschema

我有以下示例JSON,我想为此编写一个JSON Schema。约束是property2包含一个字符串列表,它是动态的,具体取决于数据集。在property3对象中,一些属性以这些字符串命名。

 {
   "property1": "value",
   "property2": ["value1","value2","value2"],
   "property3": {
                   "title": "test",
                   "value1": "hello",
                   "value2": "world"
    }
 }

JSON-Schema可能看起来像这样,但我不知道如何描述动态属性。这可能吗?

 {
   "title": "Test Object",
   "type": "object",
   "properties": {
              "property1": {
                     "type": "string"
               }
              "property1": {
                     "type": "array"
               }
              "property3": {
                     "type": "object",
                     "properties": {
                               "title": {
                                     "type": "string"
                               }
                               [ Something is missing here ]
                      }
               }
    }
 }

1 个答案:

答案 0 :(得分:1)

您不能将属性值与Json-Schema的属性键相关联(截至草稿v4)。

你可以:

  • 将property2定义为架构并从property3引用它(#ref)(dependencies,allOf,anyOf,additionalProperties ...)。如果这些属性名称在您的情况下非常动态,您可以动态构建此架构。
  • 使用patternProperties将property3中的有效属性名称重命名为某些固定的正则表达式。