jsonnet - jsonnet:如何将数组序列化为字符串
解决方案
存在一个std.toString
功能,它可能确实想要你想要的。例如std.toString(["a", "b", "c", "d"])
结果是一个字符串["a", "b", "c", "d"]
。它与您的示例输出略有不同"a", "b", "c", "d"
。
如果您想拥有您想要的格式,您当然可以自己构建字符串。最明显的方法是编写一个递归函数(这就是你在 Jsonnet 中迭代的方式):
local arrayToString(arr) =
local aux(arr, index) =
// Assuming escapeStringJson is how you want to serialize
// the elements. Of course you can use any other way
// to serialize them (e.g. toString or manifestJson).
local elem = std.escapeStringJson(arr[index]);
if index == std.length(arr) - 1 then
elem
else
elem + ", " + aux(arr, index + 1)
;
aux(arr, 0);
arrayToString(["a", "b", "c", "d"])
一种更惯用的方法是使用 map 来转换数组的所有元素,然后 join 将它们合并为一个字符串:
local arrayToString(arr) = std.join(", ", std.map(std.escapeStringJson, arr));
arrayToString(["a", "b", "c", "d"])
推荐阅读
- asp.net-core - 在单个 launch.json 中运行两个项目
- python - 运行绘图破折号代码时,在 Chrome 浏览器中加载依赖项时出错
- ruby - 无法在 OSX 上安装 OpenSSL gem
- php - DOMNode 类中不存在 PHP-getelementsbytagname 方法
- locking - 页面刷新后 SignalR 无法正常工作
- vba - VBA 使用单个 sendkeys 驱动的宏执行数以万计的操作
- wso2is - WSO2IS passport-saml SLO,从编码字符串构造 AuthRequest 时出错
- caching - WebAPI core 2.0 通过 post params 缓存
- vuejs2 - 从 VueJS 应用程序中访问 VuePress 文档?
- jquery - 何时使用 toastr 在重定向中清除 Viewbag