Merge pull request #191 from champly/fix-attachment-lost-nil
fix get attachment lost nil key
diff --git a/request.go b/request.go
index 807f73f..020c789 100644
--- a/request.go
+++ b/request.go
@@ -337,6 +337,11 @@
dest := make(map[string]string)
for k, v := range origin {
if kv, ok := k.(string); ok {
+ if v == nil {
+ dest[kv] = ""
+ continue
+ }
+
if vv, ok := v.(string); ok {
dest[kv] = vv
}
diff --git a/request_test.go b/request_test.go
index c64e013..b5886db 100644
--- a/request_test.go
+++ b/request_test.go
@@ -18,6 +18,7 @@
package hessian
import (
+ "reflect"
"testing"
"time"
)
@@ -80,3 +81,37 @@
assert.Equal(t, "[Ljava/lang/String;", results[0])
assert.Equal(t, "[I", results[1])
}
+
+func TestIssue192(t *testing.T) {
+ type args struct {
+ origin map[interface{}]interface{}
+ }
+ tests := []struct {
+ name string
+ args args
+ want map[string]string
+ }{
+ {
+ name: "not null",
+ args: args{
+ origin: map[interface{}]interface{}{
+ "1": nil,
+ "2": "3",
+ "": "",
+ },
+ },
+ want: map[string]string{
+ "1": "",
+ "2": "3",
+ "": "",
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if got := ToMapStringString(tt.args.origin); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("ToMapStringString() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}