键具有不同名称的 JSON 模式

标签 json jsonschema

{"57ecf565817bc3932d8de349": {
  "prices": {

    "2017-07-01": {
      "summer": -1, 
      "winter": -1, 
      "xmas": -1},

    "2017-08-05": {
      "summer": -1, 
      "winter": -1, 
      "xmas": -1}
    }
  }
}

如何编写每个键都不同的 JSON 模式(此处:2017-07-01、2017-08-05)所以我不能使用 items如本例中 http://json-schema.org/example1.html#definitions (产品架构集)。

这是我的架构:
{
  "type": "object",
  "properties": {
    "57ecf565817bc3932d8de349": {
      "type": "object",
      "properties": {
        "prices": {
          "type": "object",
          "properties": {
            "2017-07-01": {
              "type": "object",
              "properties": {
                "summer": {
                  "type": "integer"
                },
                "winter": {
                  "type": "integer"
                },
                "xmas": {
                  "type": "integer"
                }
              },
              "required": [
                "summer",
                "winter",
                "xmas"
              ]
            },
            "2017-08-05": {
              "type": "object",
              "properties": {
                "summer": {
                  "type": "integer"
                },
                "winter": {
                  "type": "integer"
                },
                "xmas": {
                  "type": "integer"
                }
              },
              "required": [
                "summer",
                "winter",
                "xmas"
              ]
            }
          },
          "required": [
            "2017-07-01",
            "2017-08-05"
          ]
        }
      },
      "required": [
        "prices"
      ]
    }
  },
  "required": [
    "57ecf565817bc3932d8de349"
  ]
}

在我的原始 JSON 中,我有很多这样的日期:2017-07-01,我想避免为每个日期重复模式。

最佳答案

您可以使用 additionalProperties 执行此操作关键词。在此示例中,对象中的每个属性都必须针对给定的架构进行验证。

{
  "type": "object",
  "additionalProperties": {
    "type": "object",
    "properties": {
      "summer": { "type": "integer" },
      "winter": { "type": "integer" },
      "xmas": { "type": "integer" }
    },
    "required": ["summer", "winter", "xmas"]
  }
}

关于键具有不同名称的 JSON 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39772577/

相关文章:

json - 从 json 中引用 JSON Schema 的方式与 XML 引用 XML Schema 的方式类似

ruby-on-rails - rails as_json 没有为 JSON.parse 正确编码

json - GATLING JSON 保存和重用

json - Pyspark delta Lake json 数据类型演变问题(合并不兼容异常)

json - 删除使用 oneOf(v4 或 v5)的 JSON 架构中的重复项

json - 您应该如何引用 JSON 对象符合的 JSON 模式?

javascript - Backbone.js 中的嵌套模型

javascript - Python API,由 JavaScript 使用,发送 JSON 数据

asp.net - 使用 jQuery Ajax 将参数传递给 WebMethod

xml - JSON 架构与 XML 架构