Jsonnet嵌套数组语法疑问:如何声明数组内的数组?
在Jsonnet中声明数组内嵌套结构的方法
期望生成的配置结构
你期望生成的YAML结构如下:
git/push/myrules: rules: - changes: - package.json - yarn.lock
当前已实现的代码
你已经成功将changes作为rules数组的第一个元素,代码如下:
local git_push_instance() = { ['rules']: [ 'changes' ] }; { ['git/push/myrules']: git_push_instance() }
执行命令 jsonnet rules.jsonnet 后输出:
{ "git/push/myrules": { "rules": [ "changes" ] } }
错误尝试及问题
你尝试将changes设置为包含package.json和yarn.lock的数组时,使用了如下代码:
local git_push_instance() = { ['rules']: [ changes: ['package.json', 'yarn.lock'] ] }; { ['git/push/myrules']: git_push_instance() }
出现报错:
STATIC ERROR: rules.jsonnet:4:16: 预期在下一个数组元素前添加逗号。
正确实现方式
问题出在数组元素的写法上:rules数组中的每个元素应该是一个对象,而不是直接写键值对。你需要把changes包裹成对象的形式,正确代码如下:
local git_push_instance() = { ['rules']: [ { changes: ['package.json', 'yarn.lock'] } ] }; { ['git/push/myrules']: git_push_instance() }
执行这段代码后,就能生成你期望的嵌套结构:rules数组包含一个对象,该对象的changes键对应一个包含两个文件名的数组。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

