src.dualinventive.com/go/websocketserver/internal/wsconn/json.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
}