如何封送报价和转义报价

时间:2019-02-11 19:39:34

标签: json go marshalling

我正在整理map[string]interface{}并得到一个json:

{
    "test": {
        "test2": 123
    }
}

在某些情况下,在interface{}下,我还有另一个map[string]interface{}

有什么办法封送它并转义双引号以获取像这样的json吗?

{
    "test": "{
        \"test2\": 123
    }"
}

1 个答案:

答案 0 :(得分:-1)

(假设您不关心所需输出中的换行符)-一种实现方法是循环遍历地图中的每个值,然后使用标准{首先将其编组为json字符串{1}}功能。然后将这些字符串添加回原始地图(如果需要,也可以添加到新地图)。现在您已经有了一个映射,其中的值实际上是原始值的json字符串表示形式,您可以将该外部映射编组为json,编码器将为您转义值字符串中的任何双引号。 看到这个例子

json.Marshal

封装上述逻辑的更简洁的方法可能是为地图声明一个新的命名类型,并在Marshal方法中为该新类型实现自定义编组。