1
0
mirror of https://github.com/json-iterator/go.git synced 2025-03-29 21:20:52 +02:00

fix slice of map

This commit is contained in:
Tao Wen 2017-04-16 14:05:08 +08:00
parent d1aa59e34e
commit e5476f70e7
2 changed files with 14 additions and 0 deletions

@ -20,6 +20,9 @@ func encoderOfSlice(typ reflect.Type) (Encoder, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if typ.Elem().Kind() == reflect.Map {
encoder = &optionalEncoder{typ.Elem(), encoder}
}
return &sliceEncoder{typ, typ.Elem(), encoder}, nil return &sliceEncoder{typ, typ.Elem(), encoder}, nil
} }

@ -56,3 +56,14 @@ func Test_write_val_map(t *testing.T) {
should.Nil(err) should.Nil(err)
should.Equal(`{"1":"2"}`, str) should.Equal(`{"1":"2"}`, str)
} }
func Test_slice_of_map(t *testing.T) {
should := require.New(t)
val := []map[string]string{{"1": "2"}}
str, err := MarshalToString(val)
should.Nil(err)
should.Equal(`[{"1":"2"}]`, str)
val = []map[string]string{}
should.Nil(UnmarshalFromString(str, &val))
should.Equal("2", val[0]["1"])
}