【问题标题】:json schema field required based on value of nested field基于嵌套字段的值所需的 json 模式字段
【发布时间】:2017-05-08 05:54:25
【问题描述】:

我已经尝试过JSON Schema - specify field is required based on value of another field,但它不适用于以下情况。

实例 1

{

   "part1": {
      "subPartA" : {
          "value": "X"
       }   
    },
    "partX": {
         "propXX": "val1",
         "prop2": null

     }
}

实例 2

{

   "part1": {
      "subPartA" : {
          "value": "Y"
       }   
    },
    "partY": {
         "propYY": "val123",
         "prop2": null

     }
}

如何制作 partX.propXX 需要 part1.subPart1.value = "X"partY.propYY 需要 part1.subPart1.value = "Y"

?

【问题讨论】:

    标签: json jsonschema


    【解决方案1】:

    除非您的意思是您希望 data 中的值成为所需属性名称的一部分(使用 JSON 模式关键字这是不可能的),否则您可以进行这种关联:

    {
      "type": "object",
      "required": ["part1"],
      "properties": {
        "part1": {
          "type": "object",
          "required": ["subPartA"],
          "properties": {
            "subPartA": {
              "type": "object",
              "required": ["value"],
              "properties": {
                "value": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "anyOf": [
        {
          "required": ["partX"],
          "properties": {
            "part1": {
              "properties": {
                "subPartA": {
                  "properties": {
                    "value": {
                      "enum": ["X"]
                    }
                  }
                }
              }
            },
            "partX": {
              "type": "object",
              "required": ["propXX"],
              "properties": {
                "propXX": {
                  "type": "string"
                }
              }
            }
          }
        },
        {
          "required": ["partY"],
          "properties": {
            "part1": {
              "properties": {
                "subPartA": {
                  "properties": {
                    "value": {
                      "enum": ["Y"]
                    }
                  }
                }
              }
            },
            "partY": {
              "type": "object",
              "required": ["propYY"],
              "properties": {
                "propYY": {
                  "type": "string"
                }
              }
            }
          }
        }
      ]
    }
    

    【讨论】:

    猜你喜欢
    • 2020-09-30
    • 1970-01-01
    • 2019-04-14
    • 2013-07-19
    • 2015-01-21
    • 2015-04-09
    • 2020-05-08
    • 2021-08-29
    • 2019-12-17
    相关资源
    最近更新 更多