json schema - 根据另一个字段值需要字段

时间:2017-06-19 11:52:56

标签: jsonschema

我正致力于创建JsonSchema(v4)。 我试图根据其父母的另一个财产的价值制作一个所需的财产。

  • 用户
    • 亚型
    • 地址

  • 地址
    • LINE1
    • LINE2
    • companyName(如果用户子类型是公司,则是必需的)

怎么可以这样做? 我现在有这样的事情......

{
 "User": {
  "title": "User",
  "type": "object",
  "id": "#User",
  "properties": {
     "subtype": {
      "type": "string"
     },
     "address": {
      "$ref": "Address"
     }
  }
 }


 "Address": {
  "title": "Address",
  "type": "object",
  "id": "#Address",
  "properties": {
     "line1": {
      "type": "string"
     },
     "line2": {
      "type": "string"
     },
     "companyName": {
      "type": "string"
     }
   },
   "required": ["line1", "line2"]
 }
}

子类型是一个任意字符串,因此不可能有完整的不同子类型列表。

1 个答案:

答案 0 :(得分:0)

将此添加到您的用户架构。基本上它读作:“子类型”不是“公司”或“地址”需要“公司名称”。

"anyOf": [
  {
    "not": {
      "properties": {
        "subtype": { "enum": ["company"] }
      }
    }
  },
  {
    "properties": {
      "address": {
        "required": ["companyName"]
      }
    }
  }
]