首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >json架构中的多个条件必填字段

json架构中的多个条件必填字段
EN

Stack Overflow用户
提问于 2021-05-04 22:57:35
回答 2查看 68关注 0票数 0

我有一个模式,它有一个属性,如果枚举与某个值匹配,就需要这个属性。这可以很好地工作。

代码语言:javascript
运行
复制
    "oneOf": [
      {
        "not" : {
          "properties": {
            "other-val": { "enum" : ["ABC"]}
          }
        }
      },
      { "required": ["ABC-detail"] } 
    ],

但是,基于other-value枚举是否为"DEF“,我尝试添加第二个字段DEF-detail。我不确定如何链接这些依赖项。我试着在一个allOf中添加多个oneOf,但是我不能给它添加多个相同的键。

EN

回答 2

Stack Overflow用户

发布于 2021-05-04 23:56:40

oneOf中的一组条件是有效的。例如,我认为这并不排除DEF不能拥有abc-thing,但在我的例子中这是可以的。

代码语言:javascript
运行
复制
    "oneOf": [
      {
        "properties": {"other-val": {"enum": ["ABC"]}},
        "required": ["abc-thing"]
      },
      {
        "properties": {"other-val": {"enum": ["DEF"]}},
        "required": ["def-thing"]
      },  
      {
        "properties": {"other-val": {"enum": ["GHI"]}},
        "required": ["ghi-thing"]
      },            
      {
        "not": {"properties": {"other-val": {"enum": ["ABC", "DEF", "GHI"]}}}
      }
    ],
票数 0
EN

Stack Overflow用户

发布于 2021-05-05 08:19:47

这种模式被称为“隐含”。通过将它们与allOf相结合,您可以很容易地声明多个隐含。

代码语言:javascript
运行
复制
{
  "allOf": [
    {
      "anyOf": [
        {
          "not": {
            "properties": {
              "other-val": { "const": "ABC" },
            },
            "required": ["other-val"]
          }
        },
        { "required": ["ABC-detail"] }
      ]
    },
    ... another implication ...,
    ... another implication ...
  ]
}

如果您使用的是draft-07或更高版本,那么您还可以使用if/then,它只是隐含的一点语法糖。

代码语言:javascript
运行
复制
{
  "if": {
    "properties": {
      "other-val": { "const": "ABC" }
    },
    "required": ["other-val"]
  },
  "then": { "required": ["ABC-detail"]
}

可以使用allOf以与隐含相同的方式组合此模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67387226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档