【问题标题】:Use (scalar) variables in jsonschema to dynamically set attribute, e.g. title在 json 模式中使用(标量)变量来动态设置属性,i.n.标题
【发布时间】:2021-11-15 11:41:55
【问题描述】:

我正在使用 Google Cloud 部署管理器来管理基础架构即代码 (IAC),它们支持提供用于描述 IAC 模板的架构文件。他们对 jsonschema 的支持有点奇怪 - 文档非常简短,但它表明他们支持最新版本的模式,而且他们要求标题和描述位于 info 对象中。

这很烦人,因为我为我的架构使用了一个 HTML 渲染器,它实现了 jsonschema,因此,它需要将标题和描述设置为顶级属性。

为了满足两者,我需要复制,例如:


title: foo
description: bar

info:
  title: foo
  description: bar

我希望只定义一次标题和描述值,然后使用一些 $ref: "#/$defs/title" 魔术,但我认为您不能使用它来动态设置标题等值,因为此功能旨在供模式解析器获取块来自其他地方的内容。

除了动态呈现我不想做的架构文件之外,有什么方法可以避免重复值。

【问题讨论】:

  • titledescriptioninfo 属性中听起来像 OpenAPI/Swagger。你确定你处理的是香草 JSON 模式而不是 OpenAPI 吗? oai.github.io/Documentation
  • @Ether 相当肯定,但我要做的就是这个; @ 987654322@ - 不管怎样,我认为我的问题仍然存在 - 是否可以动态设置标题/描述,或者我猜更笼统地说,问题是,有什么方法可以在架构定义中定义/使用标量变量

标签: jsonschema google-deployment-manager


【解决方案1】:

据我所知,没有办法在 json 模式中使用引用。
作为一种粗略的解决方法,您可以使用脚本来添加/替换占位符:

#!/bin/bash
sed -i 's/\$title/title: foo/g' file.json
sed -i 's/\$desc/description: bar/g' file.json

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 2019-11-25
    • 2013-11-02
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2018-12-08
    • 2021-04-27
    相关资源
    最近更新 更多