package wsconn import ( "bytes" "encoding/json" ) // jsonMapString is a normal map[string]string but the values are raw json strings type jsonMapString map[string]string // MarshalJSON func (m jsonMapString) MarshalJSON() ([]byte, error) { buf := bytes.NewBuffer(nil) _, err := buf.WriteString("{") if err != nil { return nil, err } i := 0 for k, v := range m { if i > 0 { _, errWrite := buf.WriteString(",") if errWrite != nil { return nil, errWrite } } i++ kjs, errMarshal := json.Marshal(k) if errMarshal != nil { return nil, errMarshal } _, err = buf.Write(kjs) if err != nil { return nil, err } _, err = buf.WriteString(":" + v) if err != nil { return nil, err } } _, err = buf.WriteString("}") if err != nil { return nil, err } return buf.Bytes(), nil }