动态数组的json模式

时间:2015-05-27 18:44:57

标签: json jsonschema json-schema-validator

我有以下json

    {
        "Dettype": "QTY",
 "Details": [
     {
  "12568": {
    "Id": 12568,
    "qty":1,
    "Freq":"2",
    "Option": 0,
    "promote":"yes"
  },
  "22456": {
    "Id": 22456,
    "qty":2,
    "Freq":"3",
    "Option": 1,
    "promote":"no"
  }
     }
 ]
}

对于上面的json,我需要编写一个json模式文件,它将对请求进行评估。

但问题在于数组中每个项目的键值动态变化。如果它是一些常数值,我可以写,但不知道如何做动态模式

我得到的JSON模式

{
"type": "object",
"additionalProperties": true,
"properties": {
    "Dettype": {
        "type": "string"
    },
    "Details": {
        "type": "array",
        "items": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
                "**DYNAMIC VALUE**": {
                    "type": "object",
                    "additionalProperties": true,
                    "properties": {
                        "Id": {
                            "type": "integer"
                        },
                        "qty": {
                            "type": "integer"
                        },
                        "Freq": {
                            "type": "string"
                        },
                        "Option": {
                            "type": "integer"
                        },
                        "promote": {
                            "type": "string"
                        }
                    }
                }
            }
        }
    }
}

}

有人可以说明需要对架构进行哪些更改

2 个答案:

答案 0 :(得分:1)

这是patternProperties的用途。

这里似乎你的对象成员键总是数字;因此你可以这样写:

"type": "object",
"patternProperties": {
    "^\\d+$": {
        "type": "object",
        "etc": "etc"
    }
}

答案 1 :(得分:0)

如果您希望所有属性都匹配某些架构,也可以使用additionalProperties:

A