【问题标题】:jsonnet: How to serialize array into stringjsonnet:如何将数组序列化为字符串
【发布时间】:2020-04-11 07:21:11
【问题描述】:

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

进入

“a”、“b”、“c”、“d”

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

【问题讨论】:

    标签: jsonnet


    【解决方案1】:

    有一个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"])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2013-09-27
      • 2016-05-13
      • 1970-01-01
      相关资源
      最近更新 更多