首页 > 解决方案 > 如何为常规属性值设置 JSON 验证模式

问题描述

我想使用模式验证 JSON(目前草案 6,但如果需要我们可以升级)。我的案例是一个具有属性的对象,其值都具有相同的结构,例如:

{
  "blueFoo": {
    "bar1": "someValue",
    "bar2": "differentValue"
  },
  "redFoo": {
    "bar1": "someOtherValue",
    "bar2": "LoremYpsum"
  },
  "purpleFoo": {
    "bar1": "anotherString",
    "bar2": "nextValue"
  },
  ...
}

有没有办法为一般属性值设置验证模式?就像是:

{
  "type": "object",
  "propertyValue": {
    "type": "object",
    "required": ["bar1", "bar2"],
    "additionalProperties": false,
    "properties": {
      "bar1": {"type": "string"},
      "bar2": {"type": "string"}
    }
  }
}

谢谢你。

标签: jsonjsonschema

解决方案


additionalProperties正是为了这个目的:

{
 "type": "object",
 "additionalProperties": {
    "properties": {
      "bar1": {"type": "string"},
      "bar2": {"type": "string"}
    },
    "required": ["bar1", "bar2"],
    "additionalProperties": false
 }
}

推荐阅读