jsonnet:如何将数组序列化为字符串

时间:2020-04-11 07:21:11

标签: jsonnet

如何转换此 [“ a”,“ b”,“ c”,“ d”]

进入

“ a”,“ b”,“ c”,“ d”

在JSONNET(https://jsonnet.org/ref/stdlib.html

1 个答案:

答案 0 :(得分:2)

存在一个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转换数组的所有元素,然后加入以将它们合并为一个字符串:

local arrayToString(arr) = std.join(", ", std.map(std.escapeStringJson, arr));
arrayToString(["a", "b", "c", "d"])
相关问题