This is an automated email from the ASF dual-hosted git repository.

alexstocks pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-go-hessian2.git


The following commit(s) were added to refs/heads/master by this push:
     new d986129  write empty map for empty map instead null
     new 8679ff8  Merge pull request #275 from zhwaaaaaa/zw-dev
d986129 is described below

commit d98612902c0f82b528d77baf309a143ceb562da9
Author: wangzhang.zw <[email protected]>
AuthorDate: Fri Sep 3 18:47:12 2021 +0800

    write empty map for empty map instead null
---
 map.go | 32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/map.go b/map.go
index 64227bf..cd340df 100644
--- a/map.go
+++ b/map.go
@@ -118,27 +118,25 @@ func (e *Encoder) encMap(m interface{}) error {
        }
 
        keys = value.MapKeys()
-       if len(keys) == 0 {
-               // fix: set nil for empty map
-               e.buffer = EncNull(e.buffer)
-               return nil
-       }
 
-       typ = value.Type().Key()
        e.buffer = encByte(e.buffer, BC_MAP_UNTYPED)
-       for i := 0; i < len(keys); i++ {
-               k, err = getMapKey(keys[i], typ)
-               if err != nil {
-                       return perrors.Wrapf(err, "getMapKey(idx:%d, key:%+v)", 
i, keys[i])
-               }
-               if err = e.Encode(k); err != nil {
-                       return perrors.Wrapf(err, "failed to encode map 
key(idx:%d, key:%+v)", i, keys[i])
-               }
-               entryValueObj := value.MapIndex(keys[i]).Interface()
-               if err = e.Encode(entryValueObj); err != nil {
-                       return perrors.Wrapf(err, "failed to encode map 
value(idx:%d, key:%+v, value:%+v)", i, k, entryValueObj)
+       if len(keys) > 0 {
+               typ = value.Type().Key()
+               for i := 0; i < len(keys); i++ {
+                       k, err = getMapKey(keys[i], typ)
+                       if err != nil {
+                               return perrors.Wrapf(err, "getMapKey(idx:%d, 
key:%+v)", i, keys[i])
+                       }
+                       if err = e.Encode(k); err != nil {
+                               return perrors.Wrapf(err, "failed to encode map 
key(idx:%d, key:%+v)", i, keys[i])
+                       }
+                       entryValueObj := value.MapIndex(keys[i]).Interface()
+                       if err = e.Encode(entryValueObj); err != nil {
+                               return perrors.Wrapf(err, "failed to encode map 
value(idx:%d, key:%+v, value:%+v)", i, k, entryValueObj)
+                       }
                }
        }
+
        e.buffer = encByte(e.buffer, BC_END)
 
        return nil

Reply via email to