【问题标题】:JSON Schema oneOf properies filledJSON Schema oneOf 属性填充
【发布时间】:2014-03-01 05:07:42
【问题描述】:

如何设置 JSON Schema 规则来说明必须设置且必须的属性之一?

我尝试了各种方法来解决它,例如:

{
   "id":"#",
   "required":true,
   "additionalProperties":true,
   "type":"object",
   "properties":{
      "surname":{
         "id":"surname",
         "required":true,
         "type":"string"
      },
      "oneOf":[
         {
            "$ref":"#/definitions/station_id"
         },
         {
            "$ref":"#/definitions/station"
         }
      ]
   },
   "definitions":{
      "station_id":{
         "type":"integer"
      },
      "station":{
         "type":"string"
      }
   }
}

但它从来没有奏效。我需要做的是接受 station_id 是一个整数或 station 是一个字符串名称。

请问有什么办法吗?

【问题讨论】:

    标签: json jsonschema


    【解决方案1】:

    oneOf 仅在直接在模式中使用时是特殊的。当您在properties 中使用oneOf 时,它没有特殊含义,因此您实际上最终定义了一个名为"oneOf" 的属性。

    另外 - 不是属性定义需要某些东西,而是 required 关键字。此关键字是一组必需属性(不是布尔值,这是旧语法)。

    要做你想做的事,你可以创建一个oneOf 子句,其中一个选项需要"station_id",而另一个选项需要"station"

    {
        "oneOf": [
            {"required": ["station"]},
            {"required": ["station_id"]}
        ]
    }
    

    如果两者都存在,那么数据将是无效的(因为只允许一个oneOf条目通过)。

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 2017-06-24
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多