You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:50:27