在解析一个返回值的时候,得到的json格式如下。

1
{"volume.cloudtogo.cn/spec":"ID: "b9aad132b4df4f07ac78896ab193b6cc"\nMountpoint: "/workspace"\nCapacity: 1073741824\nNFS: \u003c\n\u003e\n"}

这个json是带有转义字符的。去掉这些转义字符。
根据go doc的描述,如果要禁用转义字符需要调用SetEscapeHTML(false)。

1
2
3
4
5
6
7
8
// String values encode as JSON strings coerced to valid UTF-8,
// replacing invalid bytes with the Unicode replacement rune.
// So that the JSON will be safe to embed inside HTML <script> tags,
// the string is encoded using HTMLEscape,
// which replaces "<", ">", "&", U+2028, and U+2029 are escaped
// to "\u003c","\u003e", "\u0026", "\u2028", and "\u2029".
// This replacement can be disabled when using an Encoder,
// by calling SetEscapeHTML(false).
1
2
3
4
5
6
7
8
9
10
// 禁用json中的转义字符
func disableEscapeHtml(data interface{}) (string, error) {
    bf := bytes.NewBuffer([]byte{})
    jsonEncoder := json.NewEncoder(bf)
    jsonEncoder.SetEscapeHTML(false)
    if err := jsonEncoder.Encode(data); err != nil {
        return "", err
    }
    return bf.String(), nil
}