在解析一个返回值的时候,得到的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 } |