基于 JSON 模式中枚举值的属性

2023-11-23

我正在构建一个 json 模式定义,它有一组固定的控件,我目前用enum。但是,并非所有属性都与所有控件相关。

我只想要求一个options财产如果controlType = dropdown

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "controlType": {
        "type": "string",
        "enum": ["title", "dropdown", "button"]
      },
      "options:": {
        "type": "array",
        "items": {"type": "string"}
      }
    }
  }
}

如何有条件地包含/要求 json 模式中的字段?


Use IF..Then..Else new in Draft-07

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "controlType": {
        "type": "string",
        "enum": ["title", "dropdown", "button"]
      },
      "options:": {
        "type": "array",
        "items": {"type": "string"}
      }
    },
      
    "if": {
      "properties": {
        "controlType": {"const": "dropdown"}
      }
    },
    "then": {
      "required": ["options"]
    }
  }
}

Use oneOf or anyOf

如果您的属性具有有限数量的可接受值(例如枚举),但每个可能的值都需要单独映射,则这会很有用。

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "controlType": {
        "type": "string",
        "enum": ["title", "dropdown", "button"]
      },
      "options:": {
        "type": "array",
        "items": {"type": "string"}
      }
    },  
    "anyOf": [
      {
        "properties": {
          "controlType": {"const": "dropdown"}
        },
        "required": ["controlType", "options"]
      },
      {
        "properties": {
          "controlType": {"const": "title"}
        },
        "required": ["controlType"]
      },
      {
        "properties": {
          "controlType": {"const": "button"}
        },
        "required": ["controlType"]
      }
    ]
  }
}

进一步阅读

  • 有条件地要求属性
  • 有条件地应用子模式
  • 组合模式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 JSON 模式中枚举值的属性 的相关文章

随机推荐

  • 嵌套类模板的重载运算符<<

    我有以下设置 template lt class T gt struct Foo struct Bar Bar const T t otherT t T otherT Foo const T t myT t T myT 现在 我想举例说明F
  • 使用 ADAL.js 获取的令牌对 Azure 移动服务应用程序进行身份验证

    我正在尝试针对 Azure 移动服务应用程序对 HTML 应用程序进行身份验证 设置 两个应用程序都使用 AAD 作为身份验证后端 因此两个应用程序都有一个在 Active Directory 中注册的应用程序 Azure 移动服务应用程序
  • 使用 SBT 复制文件

    我正在使用 SBT 构建 java 项目 并且需要复制文本文件 不是资源 而是由 java 类用来读取 我对 SBT 或 Scala 都没有经验 build scala 文件需要 任何帮助将非常感激 例如 如果我的目录结构是 test fi
  • 如何检查消息(postMessage)来自哪个跨域 iframe?

    我知道MessageEvent has source属性是发送消息的窗口对象 现在如何让这些信息检查主文档中的哪个 iframe 当然还有消息到达时的主文档中 是该特定消息的来源 是唯一可用的选项来检查location href on th
  • android 是否重用从资源加载的图像?

    因此 我在一个 Activity 中有多个 ImageView 并且它们都使用资源中的相同图像位图 ImageViewOne setImageResource R drawable frequently used image ImageVi
  • std::tuple 的重载运算符 << - 可能的简化?

    I used SO问题 迭代元组 的答案编写一个方法来重载 lt lt 此方法经过测试 似乎可以正确使用g 4 7在 Debian 挤压上 然而这种方法有点迂回 因为它看起来 lt lt 无法显式实例化 我找到了一篇关于它的帖子here 因
  • 获取所选 primefaces 数据表行的行号

    我有一个 primefaces 数据表 需要在 JSF 页面中显示 总行数 的 所选行号 我可以使用 rowIndexVar 属性在其中一列中显示行号 但我不知道要显示在行选择的输入文本中分别使用相同的数字 我应该在 JSF 页面或托管 b
  • from utils import label_map_util 导入错误:没有名为 utils 的模块

    我正在尝试运行object detection ipynb输入program 但它是一个普通的python程序 py 它工作得很好 但是当在内部运行时 models research object detection文件夹 但主要问题是当我
  • 如何修复由于 libmysqlclient.15.dylib 未加载而导致的错误?

    我已经升级到 Rails 2 2 2 并安装了 MySQL 2 7 gem 当我尝试运行迁移或启动服务器时看到此错误 dlopen Library Ruby Gems 1 8 gems mysql 2 7 lib mysql bundle
  • 定义和声明有什么区别?

    我不明白两者的含义 A 宣言引入标识符并描述其类型 无论是类型 对象还是函数 声明是编译器需要什么接受对该标识符的引用 这些是声明 extern int bar extern int g int int double f int doubl
  • 检测ajax请求中的重定向?

    我想使用 jQuery 获取 URL 并显式检查它是否响应 302 重定向 但是not按照重定向 jQuery 的 ajax似乎总是遵循重定向 如何防止这种情况发生 并在不遵循重定向的情况下查看重定向 有各种标题为 jquery ajax
  • 如何通过c:set将参数传递给jsp:include? JSP中变量​​的作用域是什么?

    我在welcome jsp上有这个
  • CLLocationManager 委托方法未被调用

    我在用CLLocationManager班级 我有一个简单的类方法来捕获位置 void captureLocation mLocationManager CLLocationManager alloc init mLocationManag
  • AngularJS 压缩 $http post 数据

    我正在创建一个 Ionic 应用程序 需要将大量数据发送到用 php 编写的服务器 我正在寻找一种方法来压缩我发布的数据以加快我的应用程序的速度 我不确定什么是最好的方法 我尝试过LZString但 compressToEncodedURI
  • 在主机上启用 system() 和 exec() 函数?

    我是一名开发人员 我在服务器上构建客户端站点 然后在完成后使用 PHP 脚本将其克隆到客户端服务器 我这次尝试了 但出现了错误 您的主机不允许使用 system 和 exec 功能 知道如何启用此功能吗 我有 cpanel 访问权限 主机帐
  • 在 MVC 5 Razor 视图中调用 JavaScript 函数

    我在另一篇文章中看到 您可以在 razor 代码中调用 JavaScript 函数 如下所示 FunctionName 对我来说 虽然这只输出实际的单词FunctionName 这是我的观点 model PriceCompare Model
  • 禁用鼠标提升

    有没有办法从代码中禁用鼠标升级 从而防止窗口将触摸事件解释为鼠标事件 我在 WPF 应用程序中捕获触摸事件 并且我不希望这些交互影响鼠标指针的可见性和位置 有一个TouchFrameEventArgs SuspendMousePromoti
  • 在运行时调整 QDialog 的大小

    I have a QDialog subclass containing some options of my application Some of the options are core the other are advanced
  • 动态添加可折叠元素

    Source http jquerymobile com demos 1 0a2 docs content content collapsible html当我手动将这样的元素添加到我的代码中时 它会正确显示 但是当我尝试用 jQuery
  • 基于 JSON 模式中枚举值的属性

    我正在构建一个 json 模式定义 它有一组固定的控件 我目前用enum 但是 并非所有属性都与所有控件相关 我只想要求一个options财产如果controlType dropdown schema http json schema or