XML 模式 xs:alternative 在 JSON 模式中是否可用?

2024-03-21

是否可以在 JSON Schema 中使用替代方案?在 XSD 中,这可以使用xs:alternative元素。

例如参见:如何在 XML Schema 1.1 中使用替代方案 https://stackoverflow.com/questions/14593284/how-to-use-alternatives-in-xml-schema-1-1


更新1:

这是我想使用 JSON 模式描述的示例 JSON:

{
  "actions": [
    {
      "type": "basic",
      "param1": "value"
    },
    {
      "type": "extended",
      "param1": "value",
      "param2": "blah"
    }
  ]
}

要求:

  • actions可能有任意数量的项目
  • basic行动必须包含param1财产
  • extended行动必须包含param1 and param2特性

自 Draft04 以来就有了类似的机制,具有更好的语义:oneOf、anyOf、allOf 和 not 关键字。

  • oneOf:强制给定元素仅满足模式列表中的一个。
  • anyOf:必须满足至少一个模式列表。
  • allOf:必须满足列表中提供的所有模式。
  • not:不能满足给定的模式。

假设您正在寻找一种独特的“替代方案”,这将是使用 oneOf 的 json 模式的示例:

{
    "actions" : {
        "type" : "array",
        "items" : {
            "oneOf" : [{
                    " $ref " : "#/definitions/type1 "
                }, {
                    " $ref " : "#/definitions/type2 "
                }
            ]

        }

    },
    " definitions " : {
        " type1 " : {
            " type " : " object ",
                        "properties": {
                                  "param1":{"type":"string"}
                        },
                        "required":["param1"]
        },
        " type2 " : {
            " type " : " object ",
                         "properties": {
                                  "param2":{"type":"string"},
                                  "param3":{"type":"string"}
                        },
                         "required":["param2","param3"]
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XML 模式 xs:alternative 在 JSON 模式中是否可用? 的相关文章

随机推荐

  • 如何将ListView放入PageView并垂直滚动它们?

    正如标题所说 我们想将垂直的 ListView 放入垂直的 PageView 中并使它们滚动 顺利 我们将实现这样的目标 这个概念 当用户滚动列表时 如果他们到达底部并再次向同一方向滚动 我们希望页面滚动到下一个而不是列表 反之亦然 为了实
  • eclipse indigo/juno RCP 出现“安装新软件错误”

    我尝试在 eclipse RCP 中更新软件 但出现此错误 The Error log says that some of the feature xml files are missing I opened one of the erro
  • 从完全限定域名中提取主机名的正则表达式

    我对正则表达式非常生疏 需要从完全限定的域名 FQDN 中提取主机名 这是我所拥有的一个示例 myhostname somewhere env com myotherhostname somewhereelse insomeotherpla
  • 使用 Jest 和 Enzyme 进行测试时设置 URL 参数

    我的组件有 class Search extends Component constructor props super props this state searchTerm typeof this props match params
  • 完整的 Magento/Wordpress 集成

    任何人都可以提供有关最佳方法的任何建议fully将 WordPress 博客集成到 Magento 商店中 我见过许多不同的集成方法 lazzymonkeys sonassi 等 但似乎没有一个能够完全集成整个博客 即帖子 类别 档案 搜索
  • 左调整 (hjust = 0) 带有自由刻度的面上的垂直 x 轴标签

    我决定重新表述这个问题 https stackoverflow com questions 60677990 ggplot facet grid x axis stepped 编辑会花费更多时间 而且在我看来也不会对OP有帮助 如何向左调整
  • (jQuery) 将 div 样式“display:none”切换为“display:inline”

    我有 2 个 div 我希望能够在单击按钮时在它们之间切换 当前使用 toggle 页面上显示的div是div1 该 div 的样式为 display inline 我的另一个 div div2 以样式 display none 开头 当d
  • 从 FFI 返回的切片创建 OsStr(ing) 的正确方法是什么?

    我有一个函数接受带参数的回调data const u8 length usize 代表一些路径 由此创建 OsStr ing 的正确方法是什么 There s from byte slice in OsStrExt 但似乎它没有检查数据是否
  • CasperJS click() 不加载新的 html

    我正在尝试使用 CasperJS click 点击在当前屏幕上生成模式的链接 当我查询正确的选择器并使用浏览器控制台中单击它时document querySelector click 它有效 但即使当我casper evaluate 这不起
  • Internet Explorer 10 和 11 中的边框半径显示问题[重复]

    这个问题在这里已经有答案了 我有一个带有边框半径的 div 它在 IE 10 和 IE11 中显示为某种片段 原因是什么 我们该如何解决这个问题 使用IE10或IE11访问本站查看效果 http css3pie com demos bord
  • 从主 Web 应用程序自动登录到另一个 ASP.NET 应用程序

    我正在主 Web 应用程序下的文件夹中运行 YetAnotherForum 的最新版本 该子文件夹在 IIS 中配置为应用程序 导航到该文件夹 并登录效果非常好 YAF 通过会员提供商进行设置并使用表单身份验证 我现在想做的是从主网站自动将
  • 布尔值是否有现有的 I18N 翻译?

    我需要根据表达式是真还是假以各种语言显示 是 或 否 目前我正在这样做 fr yml fr yes Oui no Non 一个辅助方法 def t boolean expression expression t yes t no end e
  • 多个项目共享一个 jenkinsfile

    我有多个具有类似构建步骤的项目 并且我正在考虑在这些项目中重用 Jenkinsfile 管道 我很难找到有关如何实现此类标准 据我看来 设置的文档 这是我的要求 1 Jenkinsfile存储在repo中 在多个项目之间共享 2 每个项目都
  • Spring Security 令牌身份验证 - RESTful JSON 服务

    我希望将 Spring Security 用于 Spring MVC 应用程序 该应用程序严格来说是一个 JSON Web 服务 我做了一些研究并阅读了一些文章 但还没有真正找到完整的内容 我希望应用程序完全无状态并使用基于令牌的身份验证
  • Azure 持久编排功能触发两次

    我正在尝试实现 Azure Durable Function 工作流程 每隔 6 分钟 我就会有一个 Azure TimerTrigger 函数调用一个 Azure Orchestration Function OrchestrationT
  • 在 CodeIgniter 中发送数据和重定向

    我有一个简单的 C CRUD 函数 我想发送一条消息 错误或成功 以及来自我编写的 插入 函数的重定向 有没有办法通过重定向来附加 POST 字段 在伪代码中我有 function view all set up some initial
  • python读取大型二进制文件最有效的方法是什么

    我有一个大 21 GB 文件 我想将其读入内存 然后传递给一个子例程 该子例程对我透明地处理数据 我在 Centos 6 5 上使用 python 2 6 6 因此无法升级操作系统或 python 目前 我正在使用 f open image
  • Git 克隆中的 Ansible 和 Git 权限被拒绝(公钥)

    我有一本剧本 我试图从私人存储库 GIT 克隆到服务器 我已经设置了 ssh 转发 当我 ssh 进入服务器并尝试从同一存储库手动克隆时 它成功工作 但是 当我使用 ansible 将存储库克隆到服务器时 它失败并显示 权限被拒绝公钥 这是
  • Threejs 变换矩阵排序

    我想知道 Threejs 如何对多个矩阵进行排序 例如 var mesh new THREE Mesh geometry material mesh position set 0 20 0 T transform matrix mesh r
  • XML 模式 xs:alternative 在 JSON 模式中是否可用?

    是否可以在 JSON Schema 中使用替代方案 在 XSD 中 这可以使用xs alternative元素 例如参见 如何在 XML Schema 1 1 中使用替代方案 https stackoverflow com question