我正在使用 jsonnet 读取由数组组成的值。我想修改该数组中的第一个元素以添加一个值。数据结构如下所示:
{
"my_value": [
{
"env": "something"
},
{
"var": "bar"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想为my_value[0]. 我如何在 jsonnet 中引用它?
使用https://jsonnet.org/ref/stdlib.html#mapWithIndex的可能方法如下:
$ cat foo.jsonnet
local my_array = [
{
env: "something",
},
{
var: "bar",
},
];
local add_by_idx(idx) = (
if idx == 0 then { extra: "stuff" } else {}
);
std.mapWithIndex(function(i, v) v + add_by_idx(i), my_array)
$ jsonnet foo.jsonnet
[
{
"env": "something",
"extra": "stuff"
},
{
"var": "bar"
}
]
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以结合superjsonnet 的 python 样式数组切片:
{
"my_value": [
{
"env": "something"
},
{
"var": "bar"
}
]
}
+
{
"my_value": [
super.my_value[0] + {
"env_2": "something_else"
},
] + super.my_value[1:]
}
Run Code Online (Sandbox Code Playgroud)
结果是:
{
"my_value": [
{
"env": "something",
"env_2": "something_else"
},
{
"var": "bar"
}
]
}
Run Code Online (Sandbox Code Playgroud)