You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/09/05 05:17:44 UTC

[dubbo-go-hessian2] branch master updated: write empty map for empty map instead null

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 <wa...@alibaba-inc.com>
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