47 lines
827 B
Go
47 lines
827 B
Go
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
|
|
}
|