如何替换 jsonnet 中列表中的值。像这样的基本示例似乎不起作用:
local users = import "../data/users.json";
// replace dots in username
local users_new = [
u + { replaced_username: std.strReplace(u.username, ".", "_") }
for u in users
];
{
data: {
[user.replaced_username]: {
username: user.username,
} for user in users_new
}
}
错误信息是这样的:
RUNTIME ERROR: Field does not exist: strReplace
templates/users.jsonnet:5:32-45 object <anonymous>
templates/users.jsonnet:11:17-38 thunk <b>
std.jsonnet:148:27 thunk <vals>
std.jsonnet:611:21-24
std.jsonnet:611:12-25 thunk <a>
std.jsonnet:611:12-36 function <anonymous>
std.jsonnet:611:12-36 function <anonymous>
std.jsonnet:148:13-28 function <anonymous>
templates/users.jsonnet:11:10-38 object <anonymous>
During manifestation
正如我从错误消息中了解到的那样,我不能在键中使用计算值,或者我在这里错过了什么?
UPD:原来std.strReplace
jsonnet 版本 0.9.5 中不存在该功能。通过将该函数复制到模板中解决了问题。