JSON Schema - 如何在对象递归中定义对象

时间:2017-07-20 09:17:48

标签: json validation recursion jsonschema

情况如下:

1。)在一个对象中,我可以有一个“字符串”,“数组”或另一个“对象”。

2。)“数组”只能包含“字符串”。

3。)“对象”可以包含1.)这意味着我可以在一个对象中拥有一个对象,该对象只能有一个字符串或数组(或者甚至更多的嵌套对象)

问题现在是1.)和2.)工作但是只要我将“$ ref”添加到“对象”以获得3.)我的验证服务器崩溃并发生堆栈溢出。

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "type": "object",
  "properties": {
    "value": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "object",
          "patternProperties": {
            ".*": {
              "$ref": "#/properties/value"
            }
          }
        }
      ]
    }
  }
}

"$ref": "#/properties/value"行打破了我的代码。

我如何让它工作?

1 个答案:

答案 0 :(得分:1)

我自己修好了。行"$ref": "#/properties/value"必须更改为"$ref": "#/properties"

我认为#/ properties意味着只允许在这些对象中使​​用属性“value”,这不是我想要的。我希望得到“价值”的内容,所以我更进了一步。

看起来"$ref": "#/properties"并不意味着只允许“值”,而只意味着“值”的属性。