使用对象键作为 JSON 架构中的类型

2024-05-08

假设我想根据 Intellij IDEA 中的 JSON 架构验证 YAML 文件。该文件的结构如下:

foo:
  command: touch /tmp/a.txt  # I know I don't need this but it's an example
bar:
  command: echo "Hello World!" > /tmp/a.txt
baz:
  command: cat /tmp/a.txt
  dependencies:
    - foo
    - bar

因此属性名称可以是任何字符串,但依赖项只能是根对象的键/属性名称。理想情况下我会指定一个枚举,但这个问题表明这是不可能的在 JSON 模式中使用对象属性键作为枚举 https://stackoverflow.com/questions/47454339/use-object-property-keys-as-enum-in-json-schema(除非答案已过时)。

不过,我注意到,当您在 Intellij 中编写模式并添加"required" = [...]它使用“属性”对象的属性名称自动完成必填字段(即使它不使用它们来验证,但对于我的目的来说足够接近)。我已经检查了它的架构http://json-schema.org/draft-07/schema# http://json-schema.org/draft-07/schema#但一直无法理解它是如何做到的。

有没有一种方法可以定义我的架构,以便 Intellij 根据另一个属性的键自动完成,就像定义架构时一样?


模式本身没有任何内容指示数据中可能的值。实际上并不要求所需数组中的项目也在属性中定义。

此类功能仅由 IDE 定义。 IntelliJ IDEA 记录了添加自定义架构的能力:

除了 JSON Schema Store 中的模式之外,IntelliJ IDEA 还可以让您 配置和使用其他存储中的自定义架构。您可以下载 所需的架构并将其存储在项目根目录下或指定 资源的 URL,以便 IntelliJ IDEA 可以下载架构 自动地。

要配置自定义 JSON 架构:

在“设置/首选项”对话框 ⌘, 中,转到“语言和框架” |模式和 DTD | JSON 架构映射。

https://www.jetbrains.com/help/idea/json.html#ws_json_schema_add_custom https://www.jetbrains.com/help/idea/json.html#ws_json_schema_add_custom

稍后还详细介绍了如何使 intelesense 提供丰富的预览:

在 JSON 模式中使用 HTML 描述 #

默认情况下,IntelliJ IDEA 在显示时转义 HTML 字符 文档弹出窗口中的 JSON 模式定义文档。到 获得带有丰富 HTML 标记的漂亮文档,存储 HTML x-intellij-html-description 扩展属性中的描述 而不是描述。

https://www.jetbrains.com/help/idea/json.html#ws_json_show_doc_in_html https://www.jetbrains.com/help/idea/json.html#ws_json_show_doc_in_html

然而,

根据另一个属性的键自动完成

听起来像是专门为编写 JSON 模式而设计的自定义功能。 JSON Schema 本身无法像这样动态引用数据(我认为这就是您的想法)。

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

使用对象键作为 JSON 架构中的类型 的相关文章

  • jsonschema:向架构添加警告/弃用

    在许多模式中 您可能希望在使用这些字段时弃用字段并记录警告 而不会导致验证完全失败 有什么方法或首选方法可以在 jsonschema 中执行此操作吗 从我读到的来看 似乎要么全有 要么全无 For draft 7JSON 模式 您必须添加自
  • 无法解析请求正文

    我一直在尝试解决以下错误 但无法解决 下面是代码 HttpPost public async Task
  • 添加按钮,该按钮将重定向到 JQGrid 中当前行的“查看页面”

    我正在尝试添加按钮而不是View专栏但我尝试过formatter仍然按钮未加载 但其余列的记录即将到来 下面是我的代码 function grid jqGrid url Location LocationsList1 datatype js
  • UIImage 在编码/解码时不等效

    我一直在对我的模型进行一些测试 以确保当我将它们编码为 JSON 然后使用它们解码回来时它们是相等的JSONEncoder Decoder 然而 我的一项测试失败了 罪魁祸首是UIImage 我已确保在编码 解码过程中没有抛出任何错误 首先
  • Swagger 定义中的 BigDecimal 作为 String

    我想定义一个对象大十进制作为字符串swagger json 现在我可以做 MyObject type object properties amountOfMoney type string pattern d d name type str
  • 将 JSON 数据从 Chrome 浏览器扩展发布到 MVC 控制器

    我编写了一个 Chrome 浏览器扩展 它使用 Ajax 将数据发送到 MVC3 控制器 为了确保控制器代码正常工作 我首先编写了一个 Razor 网页来原型化 ajax 代码 该代码在网页中工作 绑定了所有的 JSON 模型 我将其发布到
  • 阻止跨域调用 asp.net .asmx Web 服务

    我构建了一个应用程序 它使用 jQuery 和 JSON 来使用 ASP NET asmx Web 服务来执行增删改查操作 应用程序和 asmx 位于同一域中 我不介意人们远程消耗 asmx 的读取操作 但不希望人们随机删除内容 我可以将我
  • 导致:java.lang.ClassNotFoundException:com.fasterxml.jackson.databind.JavaType未找到

    我在我的应用程序中使用 jackson libs 当我构建代码 使用 ant 时 构建成功 我已经在单元测试中使用这些方法尝试过模拟测试 并且工作正常 但是当启动 karaf 时 它给了我这个错误 Caused by java lang C
  • JSON数据通过JS/AJAX转化为PHP

    Goal 我正在使用 coinmarketcap com API link https api coinmarketcap com v1 ticker convert EUR 预先我将他们的数据转换成 PHP 样本 现在我想使用AJAX J
  • 在 IntelliJ IDEA 中编辑并继续?

    使用 IntelliJ IDEA 社区版进行调试时是否可以编辑一些代码 我在选项中找不到这个功能 是的 这就是所谓的 热插拔 您可以在调试过程中编译修改后的代码 并且类文件将被替换 直到您停止调试 确保在调试器设置中启用 HotSwap 选
  • Jackson - 将值传递给 JsonDeserializer

    我有一个现有的类层次结构 如下所示 public interface Service String getId String getName public class FooTask extends AbstractTask private
  • 这种日期时间格式有简单的转换吗?

    我正在使用 jQuery 从 JSON feed 中检索数据 并且作为 feed 的一部分 我获得了 datetime 属性 例如 2009 07 01 07 30 09 我想将此信息放入 javascript Date 对象中以方便使用
  • Spring MVC @RequestBody 不适用于 jquery ajax?

    这是我的ajax请求 var dataModel name1 value1 name2 value2 ajax url testURL type POST async false contentType application json d
  • 在 Flutter 的 Ferry Graphql 中序列化标量 JSON 以实现灵活的查询

    我有以下 JSON 标量 The JSON scalar type represents JSON values as specified by ECMA 404 http www ecma international org public
  • intellij idea 中的项目组

    目前 至少从 IntelliJ Idea 14 开始 ide 会记住最后一组打开的项目 我们能否轻松地控制它并拥有可切换的项目集 组 这是打开项目的另一种方式 与模块不同 我希望某个插件已经具备该功能 但是是哪一个呢 截至2017年8月 I
  • 如何使用 CloudFormation 覆盖容器环境变量来运行 AWS ECS 任务

    我正在寻找一种运行 ecs 任务的方法 我已经有了集群和任务定义设置 我只是想使用 CloudFormation 模板触发任务 我知道我可以通过单击控制台来运行任务并且它工作正常 对于 cfn 需要正确定义方法 检查所附的屏幕截图 我想使用
  • 如何使用 Quarkus 记录 com.fasterxml.jackson 错误?

    我使用 Jackson 检查和数据绑定 REST API 的输入 JSON 并且我想在输入与输入不匹配时记录错误 Valid约束 但是 异常会作为Response通过 API 但不会出现在 Quarkus 的日志中 我如何记录 Jackso
  • jquery javascript 从 JSON 对象中删除对象数据

    我有 JSON 对象 看起来像下面的对象 这个对象可以持续几天 所以我想知道我是否可以删除完整的集合 相当于下面示例中的位置 0 或位置 1 我必须首先迭代该对象并尝试找出哪个是哪个 假设我要删除邮政编码为 06238 的集合 我需要运行整
  • 如何在 json 文件上使用 jq 过滤器时限制缩进

    我的输入 JSON 文件是 name abc private true version 1 0 0 description UI dependencies xyz 9 11 abc 5 0 0 当我使用jq name xyz 输出将打印为
  • Mysql - 如何比较两个 Json 对象?

    将整个 MySql json 列与 json 对象进行比较的语法是什么 以下不起作用 select count criteria from my alerts where criteria industries 1 locations 1

随机推荐

  • 如何在 Angular JS 中显示以字节数组形式接收的图像

    我有一个将返回图像的服务器端应用程序 这些是响应标头 Content Disposition attachment filename 8822a009 944e 43f4 999b d297198d302a 1 0 low res Cont
  • SqlCommand返回值参数

    也许查看此代码的其他人能够告诉我为什么 returnID 始终为 0 我正在尝试从插入的记录中检索新的 ID public int AddToInventory int PartID int QtyOnHand int SpokenFor
  • 使用新数据输入自动更新图表

    我的图表从 DataGridView 加载数据 如果将新值插入到 DataGridView 中 我希望自动使用新数据更新图表 我的图表必然是table1 and table2在我的 DataGridView 中 它从 DataTable 获
  • 从 Harp.js 中的 EJS 模板调用另一个文件上的 javascript 函数

    尝试使用 Harp js 制作一个网站 我使用 ejs 模板 并希望将一些有用的 javascript 函数存储在中央文件中 我怎么做 我尝试使用 但它不起作用 似乎js文件没有被解析 有任何想法吗 谢谢 尽管有多种方法 有时 可以实现这一
  • 如何使用 javascript 选择页面上的任意文本?

    假设我有一个 contentEditablediv 用户可以编辑和更改其中的文本和元素 我如何任意更改此选择div用JavaScript 我所说的 更改 并不是指 更改用户选择的内容 我的意思是实际上更改what被选中 然后 用户应该能够在
  • 如何用C语言测量时间?

    我想知道某个代码块执行了多长时间 大约 像这样的事情 startStopwatch do some calculations stopStopwatch printf lf timeMesuredInSeconds How 您可以使用clo
  • Android 中的 ImageView 拖动限制

    我在布局中有一个 ImageView 并在 ImageView 上设置 OnTouchListener 来拖动 ImageView 它工作得很好 我的问题是如何防止将 ImageView 移动到布局范围之外 这是我的代码 活动类别 publ
  • 如何远程调试长时间运行的 python 脚本或服务?

    正如标题所说 我希望能够连接到在 Paster 或 uwsgi 下运行的 python 进程并利用 pdb 功能 Using winpdb http winpdb org 您可以像这样附加到正在运行的进程 插入 import rpdb2 r
  • 如果我将一个大函数声明为内联函数怎么办?

    我搜索了一些相关问题 例如C 中内联函数的好处 https stackoverflow com questions 145838 benefits of inline functions in c 但我还有疑问 如果内联函数只是为了 为编译
  • 通过 Selenium 捕获 JSON 响应

    我正在使用 Selenium IDE 或 webdriver 测试网页 该网页有一个 搜索 功能 基本上只是一个带参数的 GET 调用 javascript 还输出以控制台从搜索调用返回的 JSON 即类似console log data
  • CSS 3假3D立方体在2个盒子之间旋转

    我使用 css 实现了翻转旋转 flip card position relative z index 1 webkit perspective 1000px moz perspective 1000px o perspective 100
  • 如何在反应导航中将道具传递给“屏幕”/组件

    我对一般编程相当陌生 甚至对 JS 和 React Native 还比较陌生 但我已经为此工作了一整天 但我仍然没有弄清楚 所以我求助于 Stack Overflow 希望有人能帮助我可以帮我 基本上我想要完成的是设置其他Component
  • PHP ajax使用新数组上传多个文件

    它是我的上传 html 代码 div class col xs 12 div
  • Nodemon - 使用配置文件指定扩展监视列表

    有没有办法使用配置文件而不是命令行来指定监视列表 Nodemon 文档中的命令行方法 我尝试使用nodemon json配置文件包含以下内容 ext js json hbs html 返回 扩展名匹配 错误 然后我尝试将配置添加到packa
  • 将 Ember 组件附加到不受 Ember 管理的 DOM 元素

    我想附加一个 Ember 组件ComponentB到由某些非 Ember UI 库生成的 DOM 元素didInsertElement of ComponentA 导致类似的结果 div class ember view component
  • 对 exec 行为有什么解释吗? [复制]

    这个问题在这里已经有答案了 寻找此代码为何引发的良好解释SyntaxError def echo x return x def foo s d exec s d return dict x y for x y in d items def
  • Java RMI 通过互联网

    我正在用 Java 开发一个游戏 使用 RMI 进行所有网络通信 RMI 允许我调用服务器上的方法 但这对我来说还不够 我还希望服务器能够在连接的客户端之间传播消息 我的客户端查找服务器 它的接口扩展了远程 并在其上注册 它允许服务器知道谁
  • __declspec(align) 用于多个声明

    抱歉 这个非常简单的问题 无法在谷歌上找到答案 这个声明语法是 declspec align 16 float rF 4 declspec align 16 float gF 4 declspec align 16 float bF 4 相
  • 如何引用 models.py 之外的信号

    在文档中Django 它指定models py是定位信号回调函数的好地方 post save pre save etc 这段代码应该放在哪里 您可以将信号处理和注册代码放在您喜欢的任何地方 但是 您需要确保它所在的模块获取 尽早导入 以便信
  • 使用对象键作为 JSON 架构中的类型

    假设我想根据 Intellij IDEA 中的 JSON 架构验证 YAML 文件 该文件的结构如下 foo command touch tmp a txt I know I don t need this but it s an exam