1
0
mirror of https://github.com/json-iterator/go.git synced 2025-03-23 21:09:11 +02:00

#16 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

View File

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

View File

@ -56,3 +56,14 @@ func Test_write_val_map(t *testing.T) {
should.Nil(err)
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"])
}