json架构对象属性约束

时间:2016-02-28 14:29:31

标签: jsonschema

在我的架构中,我有一组电话对象。每个对象都有一个“status”属性,它可以是三个值之一:“Primary”,“Active”和“Not-in-use”。

我想设置以下约束: 如果电话对象的数量> 0然后一个必须有status =“Primary”

这是否可以使用json架构?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

这个架构非常接近你想要的。唯一的限制是"小学"电话号码必须是数组中的第一项。

你可能会得到"小学"通过not的创造性使用,可以在数组中的任何位置。如果我搞清楚,我会更新答案。

{
  "type": "object",
  "properties": {
    "phoneNumbers": {
      "type": "array",
      "items": [{ "$ref": "#/definitions/primaryPhone" }],
      "additionalItems": { "$ref": "#/definitions/additionalPhone" }
    }
  },
  "definitions": {
    "phone": {
      "type": "object",
      "properties": {
        "label": { "type": "string" },
        "number": { "type": "string" }
      },
      "required": ["label", "number", "status"]
    },
    "primaryPhone": {
      "allOf": [{ "$ref": "#/definitions/phone" }],
      "properties": {
        "status": { "enum": ["Primary"] }
      }
    },
    "additionalPhone": {
      "allOf": [{ "$ref": "#/definitions/phone" }],
      "properties": {
        "status": { "enum": ["Active", "Not-in-use"] }
      } 
    }
  }
}