如何在 JSON 模式中使用定义 (draft-04)

2024-01-05

我正在使用的其余服务响应类似于以下示例,我在这里仅包含 3 个字段,但还有更多字段:

{
    "results": [
        {
            "type": "Person",
            "name": "Mr Bean",
            "dateOfBirth": "14 Dec 1981"
        },
        {
            "type": "Company",
            "name": "Pi",
            "tradingName": "Pi Engineering Limited"
        }
    ]
}

我想为上面的(draft-04)编写一个 JSON 模式文件,它将明确指定:

if type == Person then list of required properties is ["type", "name", "dateOfBirth", etc] 
OR
if type == "Company" then list of required properties is ["type", "name", "tradingName", etc]

但是我无法找到任何文档或示例来说明如何执行此操作。

目前我的 JSON 架构如下所示:

{
    "$schema": "http://json-schema.org/draft-04/schema",
    "type": "object",
    "required": ["results" ],
    "properties": {
        "results": {
            "type": "array",
            "items": {
                "type": "object",
                "required": ["type", "name"],
                "properties": {
                    "type": { "type": "string" },
                    "name": { "type": "string" },
                    "dateOfBirth": { "type": "string" },
                    "tradingName": { "type": "string" }
                }
            }
        }
    }
}

我应该如何处理这个问题的任何指示/示例。


我认为推荐的方法是中所示的方法Json-Schema 网络,示例 2 http://json-schema.org/example2.html。您需要使用枚举“按值”选择模式。在你的情况下,它会是这样的:

{
    "type": "object",
    "required": [ "results" ],
    "properties": {
        "results": {
            "type": "array",
            "items": {
                "oneOf": [
                    { "$ref": "#/definitions/person" },
                    { "$ref": "#/definitions/company" }
                ]
            }
        }
    },
    "definitions": {
        "person": {
            "properties": {
                "type": { "enum": [ "person" ] },
                "name": {"type": "string" },
                "dateOfBirth": {"type":"string"}
            },
            "required": [ "type", "name", "dateOfBirth" ],
            "additionalProperties": false
        },
        "company": {
            "properties": {
                "type": { "enum": [ "company" ] },
                . . . 
            }        
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JSON 模式中使用定义 (draft-04) 的相关文章

  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • 有人知道如何将 GMap Static JSON 转换为 HTML url?

    我已经从以下位置下载了示例样式的地图snazzymaps com http snazzymaps com 我尝试转换为类似的网址但我做得不好 我正在尝试改变下一个例子 Google 地图样式静态示例 http snazzymaps com
  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 将 Laravel 集合/数组转换为 Javascript 数组

    我想将 Laravel 中的数组分配给 JavaScript 数组 我已经从我的AppServiceProvider和 json decoded 它像 View composer function view users Users all
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • DbGeography 多边形到 JSON

    我将 DbGeography 多边形存储在数据库中 我的控制器从数据库获取多边形 我需要将它们转换为 JSON var polygons db Areas Where x gt x Type type Select x gt new Vie
  • IE9 JSON 数据“您要打开还是保存此文件”

    开始使用 IE9 测试我的 jQuery 应用程序 看来我在这里可能遇到麻烦了 我注意到 当我将 JSON 数据返回到 Javascript 方法时 我总是收到此提示 您想打开或保存此文件吗 并为我提供了 3 个按钮 打开 保存和取消 当然
  • init 后用 JSON 填充 select2 不起作用

    我正在尝试使用 JSON 数组填充 select2 元素 但我无法得到它 我有下一个数组 data id Foo text Foo id Bar text Bar 我初始化 select2 如下 selectElement select2
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • Azure 应用服务在配置中添加字符串数组

    Net core 应用程序并在 Azure 应用服务中部署该应用程序 在我的应用程序中 我有一个包含以下内容的应用程序 settings json 文件 Roles Roles Admins Users 我的 ARM 模板中有以下配置 参数
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • C# Newtonsoft 反序列化 JSON 数组

    我正在尝试使用 Newtonsoft 反序列化数组 以便我可以在列表框中显示来自基于云的服务器的文件 但无论我尝试什么 我总是会收到此错误 Newtonsoft Json JsonReaderException 解析值时遇到意外字符 路径
  • 如何发送和接收大型 JSON 数据

    我对全栈开发比较陌生 目前正在尝试找出一种有效的方法send and fetch我的前端 React 和后端 Express 之间存在大量数据 同时最大限度地减少内存使用 具体来说 我正在构建一个地图应用程序 它需要我处理大型 JSON 文
  • 通过 json 模式 Sequelize 定义模型

    我想通过json制作Sequelize模型广告 我在文档中找不到是否可以通过 json 模式进行模型声明 对于这么强大的库 没有这样的功能很奇怪 也许我找错地方了 只是试图找到同一问题的答案 模式示例 类型 对象 模式 http json
  • 如果结果类型为 json,则 Struts2 Action 被调用两次

    我有一个包含 4 个操作方法的 Action 类 所有四个操作操作方法都使用 json 结果 通过日志记录和调试 我已经验证如果我调用操作方法1 操作方法2和3也会被调用 但不是4 最后再次调用action方法1 生成json结果 如果我将
  • 使用python将json和文件发送到flask

    我遇到这个问题 我试图在单个函数中向 Flask API 发送 接收一些文件和 JSON 在我的客户端 发件人 上我有 my json to be sent datas var1 var1 var2 var2 my file to be s
  • 为什么 json.Unmarshal 返回映射而不是预期的结构?

    看看这个游乐场 http play golang org p dWku6SPqj5 http play golang org p dWku6SPqj5 基本上 我正在工作的图书馆收到了interface 作为参数 然后需要json Unma
  • 使用 NewtonSoft 在一行中生成 JSON 对象

    我正在使用 JSON 库牛顿软件 http nuget org packages newtonsoft json生成 JSON 字符串 JObject out JObject FromObject new typ photos return
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J

随机推荐

  • Boost.Log 配置文件

    我正在向旧的 C 程序添加日志记录 经过一番研究后 我决定使用升压日志 http www boost org doc libs 1 56 0 libs log doc html index html 该文档充满了创建接收器和过滤器的示例 但
  • Arduino 上的中断会中断其他中断吗?

    我有一个Arduino Uno http arduino cc en Main ArduinoBoardUno 很棒的小设备 它有两个中断 让我们称呼他们吧0 and 1 我将一个处理程序附加到中断 0 并将另一个处理程序附加到中断 1 使
  • 如何将lucene文件从2.2升级到4.3.1

    我在 lucene V 2 2 中有大量索引数据 并且我已将 lucene jar 升级到 4 3 1 新版本支持升级2 2文件 如果是 我该怎么做 Lucene 保证索引向后兼容以前的主要版本 这意味着 Lucene 4 X 应该能够读取
  • 如何将 CSS 动画导出为动画 PNG、gif 或 WEBP *具有透明度*?

    Press 运行代码片段 下面可以看到我想要保存的动画加载微调器 我想用透明度替换所有绿色 另外 我希望动画能够完美循环 我尝试使用OBS录制屏幕截图视频 然后上传到https ezgif com video to gif https ez
  • Bootstrap对齐不同高度的列

    我希望能够将未知数量的列与未知的高度对齐 由于我不知道会有多少列 因此使用多行来分割列对我来说并不理想 我几乎可以通过使用列表项来达到我想要的结果 我不喜欢使用列表项的一件事是 一旦页面达到调整大小点 我就会在右侧留下额外的空间 顶部的一组
  • edge-sql.js 如何设置connectionString?

    var edge require edge var getProduct edge func sql function select from Products where ProductId myProductId getProduct
  • pandas 将多列索引应用于数据框

    情况是我有一些文件 其中包含具有多个字段的各种股票的 time series 数据 每个文件包含 time open high low close volume 目标是将所有内容放入表单的一个数据框中 field open high sec
  • cmake 在命令行上创建 Visual Studio 解决方案

    我使用的是cmake 2 6 4 WinXP专业版 在 Visual studio 2008 VC Express 版本上编译 我可以使用 cmake GUI 创建解决方案文件 但是 我不想使用 cmake GUI 因为我总是更喜欢命令行
  • 使用 --experimental-specifier-resolution=node 时如何让 yargs 自动完成工作

    我的目标是在 Typescript node js 中编写一个 CLI 它使用 experimental specifier resolution node 用 yargs 编写 支持自动完成 为了使这项工作正常进行 我使用这个entry
  • 在fabric.js中编写乳胶公式

    我希望能够在 Fabric js 画布中用乳胶编写公式 也许可以使用 MathJax http fabricjs com fabric intro part 2 text http fabricjs com fabric intro par
  • 如何检查“调试器”是否存在关键字存在吗?

    有时一些开发人员忘记删除debugger 在 javascript 代码中 它会在 IE 上产生 javascript 错误 你如何检查 例如控制台 if window console console log foo 如果调试器存在 顺便说
  • Visual Studio 2010 中的 UML 图生成器

    我的教授要求我们为下一个作业生成 UML 我们使用 Visual Studio 2010 进行 C 编程 我尝试解决它 但我无法弄清楚 我转到 体系结构 gt Windows gt UML 模型资源管理器 但不明白下一步该去哪里 UML 生
  • Spring boot MVC:找不到JSP

    Problem 我无法到达下面的视图WEB INF jsp在我的 Spring Boot Web MVC 应用程序上 我做了什么 这是我的 JSP
  • 在 R 中绘制多个图时更改图的大小

    我想知道当您使用 par mfrow c 函数绘制不同的图时 是否有一种方法可以定义 R 中图的大小 举一个简单的例子 par mfrow c 3 1 plot 1 2 plot 1 2 plot 1 2 所有地块都具有相同的大小 例如 是
  • C# 中小型集合的 List.Add 与 HashSet.Add

    Given HashSet
  • 如何在 postgres 中将多个值收集为单个字符串?

    我有桌子 Project table id name 1 A 2 B Assignment table id name project id 1 A1 1 2 A2 1 3 A3 2 我希望编写一个查询 返回每个项目以及从中创建的作业的名称
  • Laravel:不同路径的不同 api 速率限制

    我需要为不同的路径设置不同的速率限制 敌人的例子 On path users我希望每分钟 60 个请求的速率限制 而路径 stats我希望速率限制为每分钟 5 个请求 我尝试了下一种方法 Route group middleware gt
  • 在这种代码中“Select 0 from”在做什么?

    有人可以帮我理解 从以下位置选择 0 是什么意思吗 delete from table1 where cond1 and cond2 and cond3 and not exists select 0 from table2 where c
  • 读取空行 C++

    我遇到的情况是 我有一个循环 每次它读取一个字符串 但我不知道如何读取空白输入 即如果用户什么都不输入并按回车键 它会保留在那里 我想将其读取为字符串并移至下一个输入 下面是代码 int times 4 while times string
  • 如何在 JSON 模式中使用定义 (draft-04)

    我正在使用的其余服务响应类似于以下示例 我在这里仅包含 3 个字段 但还有更多字段 results type Person name Mr Bean dateOfBirth 14 Dec 1981 type Company name Pi