最近在做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
}
}