在jsonschema中使用(标量)变量来动态设置属性,例如title



我使用谷歌云部署管理器来管理基础设施作为代码(IAC(,他们支持提供用于描述IAC模板的模式文件。他们对jsonschema的支持有点奇怪——文档非常简短,但它表明他们支持最新版本的模式,而且他们要求标题和描述位于info对象中。

这很烦人,因为我的模式使用HTML呈现器,它实现了jsonschema,因此,它需要将标题和描述设置为顶级属性。

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


title: foo
description: bar
info:
title: foo
description: bar

我希望只定义一次title和description值,然后使用一些$ref: "#/$defs/title"魔术,但我不认为您可以使用它来动态设置像title这样的值,因为此功能旨在让模式解析器从其他地方获取块内容。

除了动态呈现我不想做的模式文件之外,还有什么方法可以避免重复这些值吗?

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

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

相关内容

  • 没有找到相关文章

最新更新