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