diff --git a/map.go b/map.go
index dc74493..efe70e7 100644
--- a/map.go
+++ b/map.go
@@ -20,7 +20,9 @@
 import (
 	"io"
 	"reflect"
+)
 
+import (
 	perrors "github.com/pkg/errors"
 )
 
diff --git a/map_test.go b/map_test.go
index 31ef717..b63827d 100644
--- a/map_test.go
+++ b/map_test.go
@@ -99,8 +99,11 @@
 
 func TestCustomMap(t *testing.T) {
 	testDecodeFramework(t, "customReplyMap", map[interface{}]interface{}{"a": int32(1), "b": int32(2)})
-	testDecodeFramework(t, "customReplyMapInMap", map[interface{}]interface{}{
+
+	mapInMap := map[interface{}]interface{}{
 		"obj1": map[interface{}]interface{}{"a": int32(1)},
 		"obj2": map[interface{}]interface{}{"b": int32(2)},
-	})
+	}
+	testDecodeFramework(t, "customReplyMapInMap", mapInMap)
+	testDecodeFramework(t, "customReplyMapInMapJsonObject", mapInMap)
 }
diff --git a/pojo.go b/pojo.go
index 792c226..e8eed50 100644
--- a/pojo.go
+++ b/pojo.go
@@ -23,7 +23,9 @@
 	"strings"
 	"sync"
 	"unicode"
+)
 
+import (
 	perrors "github.com/pkg/errors"
 )
 
diff --git a/test_hessian/src/main/java/test/TestCustomReply.java b/test_hessian/src/main/java/test/TestCustomReply.java
index c850e68..62e3ea6 100644
--- a/test_hessian/src/main/java/test/TestCustomReply.java
+++ b/test_hessian/src/main/java/test/TestCustomReply.java
@@ -485,7 +485,7 @@
         output.flush();
     }
 
-    public void customReplyMapInMap() throws Exception {
+    public Map<String, Object> mapInMap() throws Exception {
         Map<String, Object> map1 = new HashMap<String, Object>();
         map1.put("a", 1);
         Map<String, Object> map2 = new HashMap<String, Object>();
@@ -494,9 +494,16 @@
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("obj1", map1);
         map.put("obj2", map2);
+        return map;
+    }
 
-        JSONObject json = JSON.parseObject(JSON.toJSONString(map));
+    public void customReplyMapInMap() throws Exception {
+        output.writeObject(mapInMap());
+        output.flush();
+    }
 
+    public void customReplyMapInMapJsonObject() throws Exception {
+        JSONObject json = JSON.parseObject(JSON.toJSONString(mapInMap()));
         output.writeObject(json);
         output.flush();
     }
diff --git a/test_hessian/src/test/java/unit/TestMap.java b/test_hessian/src/test/java/unit/TestMap.java
deleted file mode 100644
index ba8cb89..0000000
--- a/test_hessian/src/test/java/unit/TestMap.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package unit;
-
-import junit.framework.Assert;
-import org.junit.Test;
-import test.TestCustomReply;
-
-public class TestMap {
-
-    @Test
-    public void testHelloWordString() throws Exception {
-        new TestCustomReply(System.out).customReplyMapInMap();
-    }
-}
