假设我想根据 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(使用前将#替换为@)