说我想针对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
因此属性名称可以是任何字符串,但是依赖项只能是根对象的键/属性名称。理想情况下,我将指定一个枚举,但是这个问题表明不可能Use object property keys as enum in JSON schema(除非答案已经过时)。
仍然,我注意到,当您在Intellij中编写模式并添加"required" = [...]
时,它会自动填写带有“属性”对象的属性名称的必填字段(即使它不使用它们来验证,但足够接近我的目的)。我已经为http://json-schema.org/draft-07/schema#签出了架构,但是还无法理解它是如何做到的。
有没有一种方法可以定义我的模式,以便像定义模式时一样,Intellij根据其他属性的键自动完成?
答案 0 :(得分:1)
模式本身中没有任何内容指示数据中可能的值。实际上,并不需要在属性中也定义必需数组中的项。
此类功能仅由IDE定义。 IntelliJ IDEA记录了添加自定义架构的能力:
除了JSON模式存储中的模式外,IntelliJ IDEA还可以让您 从其他存储配置和使用自定义架构。你可以下载 所需的架构,并将其存储在项目根目录下,或指定 资源的URL,以便IntelliJ IDEA可以下载模式 自动。
要配置自定义JSON架构,请执行以下操作:
在“设置/首选项”对话框⌘中,转到“语言和框架” |模式和DTD | JSON模式映射。
https://www.jetbrains.com/help/idea/json.html#ws_json_schema_add_custom
稍后还将详细介绍如何使智能感知提供丰富的预览:
在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
但是
基于其他属性的键自动完成
听起来像是专门为编写JSON模式而设计的自定义功能。 JSON Schema本身不能动态引用数据(我认为这就是您的想法)。