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 に存在しないことが判明しました。その関数をテンプレートにコピーすることで問題が解決しました。