【问题标题】:Json schema property aliasingJson 模式属性别名
【发布时间】:2014-02-23 15:28:07
【问题描述】:

以下 JSON 架构描述了一个有效的经纬度坐标 JSON:

{
    "title": "coordinates",
    "type": "object",
    "properties": {
        "longitude": {
        "type": "number",
        "minimum": -180,
            "maximum":180,
            "exclusiveMinimum": false,
            "exclusiveMaximum": false
        },
        "latitude": {
        "type": "number",
        "minimum": -180,
            "maximum":180,
            "exclusiveMinimum": false,
            "exclusiveMaximum": false
        }
    },
    "required": ["longitude", "latitude"],
    "additionalProperties":false
}

required 设置将latitude 属性设置为强制属性。

有没有办法为latitude 键定义一个别名,以便客户端可以使用latitudelat - 但不能两者都使用,也不能两者都使用?

【问题讨论】:

    标签: json validation alias jsonschema


    【解决方案1】:

    对于“一个或另一个,但不是两个”,你需要oneOf

    {
        "oneOf": [
            {"required": ["lat"]},
            {"required": ["latitude"]}
        ]
    }
    

    那么您所需要的就是对这两个属性有一个共同的定义。 :)

    【讨论】:

      【解决方案2】:

      您可以使属性名称成为模式(找到示例here

      {
          "title": "coordinates",
          "type": "object",
          "patternProperties": {
              "/^lat(itude)?$/": {
                  "type": "number",
                  "minimum": -180,
                  "maximum":180,
                  "exclusiveMinimum": false,
                  "exclusiveMaximum": false
              }
          },
          "additionalProperties":false
      }
      

      ...但这破坏了required 属性(它似乎无法处理模式)。不是一个很好的答案,但也许有帮助。 :)

      【讨论】:

        猜你喜欢
        • 2016-04-23
        • 2021-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多