Files
NixMsg/sdk/go/json.go
T

37 lines
609 B
Go

package nixmsg
import (
"bytes"
"encoding/json"
"io"
)
func marshalJSON(v any) ([]byte, error) {
var buf bytes.Buffer
enc := json.NewEncoder(&buf)
enc.SetEscapeHTML(false)
if err := enc.Encode(v); err != nil {
return nil, err
}
b := buf.Bytes()
if n := len(b); n > 0 && b[n-1] == '\n' {
b = b[:n-1]
}
return b, nil
}
func unmarshalJSON(data []byte, v any) error {
dec := json.NewDecoder(bytes.NewReader(data))
dec.UseNumber()
return dec.Decode(v)
}
func writeJSON(w io.Writer, v any) error {
b, err := marshalJSON(v)
if err != nil {
return err
}
_, err = w.Write(b)
return err
}