已填充属性之一的JSON模式

已填充属性之一的JSON模式,json,jsonschema,Json,Jsonschema,如何设置JSON模式规则,以表示必须设置且需要一个属性 我尝试了各种方法来解决它,如: { "id":"#", "required":true, "additionalProperties":true, "type":"object", "properties":{ "surname":{ "id":"surname", "required":true, "type":"string" }

如何设置JSON模式规则,以表示必须设置且需要一个属性

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

{
   "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 What是整数或station What是字符串名


请问有什么方法可以做到这一点吗?

其中一个只有在模式中直接使用时才是特殊的。当您在
属性
中使用
oneOf
时,它没有特殊意义,因此您实际上最终定义了一个名为
“oneOf”
的属性

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

要执行所需操作,请创建一个
oneOf
子句,其中一个选项需要
“station\u id”
,另一个选项需要
“station”

{
    "oneOf": [
        {"required": ["station"]},
        {"required": ["station_id"]}
    ]
}
如果两者都存在,则数据将无效(因为只有一个
条目被允许通过)