🐛 WriteValue can handle slices and maps

This commit is contained in:
Dan Jones 2024-03-10 15:49:36 -05:00
commit 59634f6c3f
2 changed files with 14 additions and 0 deletions

View file

@ -14,6 +14,18 @@ func WriteValue(buff *bytes.Buffer, val any) (n int, err error) {
err = fmt.Errorf("Unsupported type %T", v)
case nil:
return
case []any:
var o []byte
o, err = json.Marshal(v)
if err == nil {
return buff.Write(o)
}
case map[string]any:
var o []byte
o, err = json.Marshal(v)
if err == nil {
return buff.Write(o)
}
case string:
return buff.WriteString(v)
case int:

View file

@ -30,6 +30,8 @@ func TestWriteBuffer(t *testing.T) {
{"json.Number", json.Number("42.13"), "42.13", nil},
{"json.RawMessage", json.RawMessage("{}"), "{}", nil},
{"time", when, when.Format(time.RFC3339), nil},
{"slice", []any{1, 2, "foo"}, `[1,2,"foo"]`, nil},
{"map", map[string]any{"baz": 42, "foo": "bar"}, `{"baz":42,"foo":"bar"}`, nil},
{"struct", struct{}{}, "", errors.New("Unsupported type struct {}")},
}