挫娃子

golang JSON编码时保留HTML标签

最近在做websocket的时候,因为实时保存文档,文档中含有特殊字符造成编译出错:
son: invalid use of ,string struct tag, trying to unmarshal “PHA+YXNkc2FkYXNk
YXNkYXNkYXNkYXNkYXNkYXNkPC9wPg==” into string

后来查了文档发现:
json的Encoder只能编码到实现了io.Writer接口的对象中去,而本例中需要编码到一个[]byte切片中。

查找资料发现bytes.Buffer对象实现了io.Writer接口。所以最终代码如下:
func BuildJson(data map[string]interface{}) ([]byte, error) {
buf := bytes.NewBufferString(“”)
encoder := json.NewEncoder(buf)
encoder.SetEscapeHTML(false)
if err := encoder.Encode(&data); err != nil {
return nil, err
} else {
return buf.Bytes(), nil
}
}

且行且珍惜,转载请注明来自挫娃子《golang JSON编码时保留HTML标签》

评论