【问题标题】:json schema to validate property value with its dynamic keyjson 模式使用其动态键验证属性值
【发布时间】:2020-10-14 10:24:19
【问题描述】:

数据:

{
  "dynamic_key_1": {
    "key1": "value1"
    "id": "dynamic_key_1"
  },
  "dynamic_key_2": {
    "key1": "value2"
    "id": "some_random"
  }
}

架构:

{
    "patternProperties": {
      "^[^{}\"/\\\\]+$": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
            // ... validate with key
          }
        }
     }
  }
}

如何使用 json 架构验证 id 值是否等于 key

在上述情况下,dynamic_key_1 会通过,dynamic_key_2 会失败。

【问题讨论】:

    标签: jsonschema json-schema-validator ajv


    【解决方案1】:

    除非您事先知道所有可能的值,否则无法在 JSON 模式中执行此操作。您不能将实例中的数据动态地用作架构中的某种模板。

    【讨论】:

      【解决方案2】:

      我确实找到了一种方法来做到这一点。使用patternNames 正则表达式进行验证。

      ...
      "propertyNames": {
          "pattern": "[A-Za-z][A-Za-z0-9_-]*$"
        },
      "patternProperties": {
            "^[^{}\"/\\\\]+$": {
              "type": "object",
              "required": [
                "id"
              ],
              "properties": {
                "id": {
                  "type": "string"
                  // ... validate with key
                }
              }
           }
        }
      ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-03
        • 2012-03-14
        • 1970-01-01
        • 2015-04-26
        • 2019-09-14
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        相关资源
        最近更新 更多