JSON Schema将两个属性比较为等长数组

时间:2016-07-27 22:34:03

标签: json jsonschema

我在模式中有两个属性,它们都是数组。我想比较一下他们是否等长。

例如:

schema.json

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "thing": {
      "type": "object",
      "properties": {
        "fields": {
          "type": "array",
          "items": {}
        },
        "values": {
          "type": "array",
          "items": {}
        }
      },
      "required": ["fields", "values"]
    }
  }
}

data.json

{
  "thing": {
    "fields:": ["age", "sex", "location"],
    "values:": [25, "Male", "Cape Town"]
  }
}

我想要比较的是字段和值在架构中的长度相同。我该怎么做?

1 个答案:

答案 0 :(得分:3)

在JSON Schema中,所有验证关键字的范围都限定为它适用的值。换句话说,您无法根据另一个值验证一个值。

如果你以几乎任何其他方式重构这个结构,你就不应该有任何问题。

例如,您可以使用items关键字的数组形式定义对的列表。

{
  "thing": [
    ["age", 15],
    ["sex", "Male"],
    ["location", "Capetown"]
  ]
}

或者,您可以使用additionalProperties关键字并使用对象以更自然的方式显示键/值对。

{
  "thing": {
    "age": 15,
    "sex": "Male",
    "location": "Capetown"
  }
}