Skip to content

Commit 83b4116

Browse files
authored
fix panic on map[string]interface{} encode (#53)
1 parent ff1a304 commit 83b4116

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

encoder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func (e *encoder) setFieldByType(current reflect.Value, namespace []byte, idx in
181181
namespace = append(namespace, s...)
182182
namespace = append(namespace, ']')
183183

184-
e.setFieldByType(current.MapIndex(key), namespace, -2, false)
184+
e.setFieldByType(v.MapIndex(key), namespace, -2, false)
185185
}
186186

187187
case reflect.Struct:

encoder_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,6 +1018,23 @@ func TestEncoderStruct(t *testing.T) {
10181018
Equal(t, val[0], tm.Format(time.RFC3339))
10191019
}
10201020

1021+
func TestEncoderMap(t *testing.T) {
1022+
inner := map[string]interface{}{
1023+
"inner": "1",
1024+
}
1025+
1026+
outer := map[string]interface{}{
1027+
"outer": inner,
1028+
}
1029+
1030+
enc := NewEncoder()
1031+
values, _ := enc.Encode(outer)
1032+
1033+
val, ok := values["[outer][inner]"]
1034+
Equal(t, ok, true)
1035+
Equal(t, val[0], "1")
1036+
}
1037+
10211038
func TestDecodeAllNonStructTypes(t *testing.T) {
10221039

10231040
encoder := NewEncoder()

0 commit comments

Comments
 (0)