diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxCardApiSignature.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxCardApiSignature.java index 17d8ab9f..0b9f689b 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxCardApiSignature.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxCardApiSignature.java @@ -2,10 +2,8 @@ package me.chanjar.weixin.common.bean; import java.io.Serializable; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - import lombok.Data; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; /** * 卡券Api签名. @@ -37,6 +35,6 @@ public class WxCardApiSignature implements Serializable { @Override public String toString() { - return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + return WxGsonBuilder.create().toJson(this); } } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenu.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenu.java index 8b43646a..ab000733 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenu.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenu.java @@ -7,9 +7,6 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - import lombok.Data; import me.chanjar.weixin.common.util.json.WxGsonBuilder; @@ -49,7 +46,7 @@ public class WxMenu implements Serializable { @Override public String toString() { - return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + return this.toJson(); } } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java index 5e0b9db9..114e267d 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java @@ -4,11 +4,9 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - import com.google.gson.annotations.SerializedName; import lombok.Data; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; /** * menu button. @@ -83,7 +81,7 @@ public class WxMenuButton implements Serializable { @Override public String toString() { - return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + return WxGsonBuilder.create().toJson(this); } } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java index 632279b9..49d4e891 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java @@ -2,11 +2,9 @@ package me.chanjar.weixin.common.bean.menu; import java.io.Serializable; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - import com.google.gson.annotations.SerializedName; import lombok.Data; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; /** * menu rule. @@ -31,6 +29,6 @@ public class WxMenuRule implements Serializable { @Override public String toString() { - return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + return WxGsonBuilder.create().toJson(this); } } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java index d6ffd50c..a62bf3c6 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java @@ -2,9 +2,6 @@ package me.chanjar.weixin.common.bean.result; import java.io.Serializable; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - import lombok.Data; import me.chanjar.weixin.common.util.json.WxGsonBuilder; @@ -28,7 +25,7 @@ public class WxMediaUploadResult implements Serializable { @Override public String toString() { - return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + return WxGsonBuilder.create().toJson(this); } } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxGsonBuilder.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxGsonBuilder.java index 7c7d92f0..97740efb 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxGsonBuilder.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxGsonBuilder.java @@ -7,9 +7,13 @@ import me.chanjar.weixin.common.bean.menu.WxMenu; import me.chanjar.weixin.common.error.WxError; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; +/** + * . + * @author chanjarster + */ public class WxGsonBuilder { - public static final GsonBuilder INSTANCE = new GsonBuilder(); + private static final GsonBuilder INSTANCE = new GsonBuilder(); static { INSTANCE.disableHtmlEscaping(); diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImpl.java index f880db90..5d623b2a 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImpl.java @@ -56,7 +56,7 @@ public class WxCpDepartmentServiceImpl implements WxCpDepartmentService { String responseContent = this.mainService.get(url, null); JsonElement tmpJsonElement = new JsonParser().parse(responseContent); - return WxCpGsonBuilder.INSTANCE.create() + return WxCpGsonBuilder.create() .fromJson(tmpJsonElement.getAsJsonObject().get("department"), new TypeToken>() { }.getType() diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java index 8f0375f3..3507de07 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java @@ -1,6 +1,5 @@ package me.chanjar.weixin.cp.api.impl; -import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -11,6 +10,7 @@ import me.chanjar.weixin.common.util.json.GsonHelper; import me.chanjar.weixin.cp.api.WxCpOAuth2Service; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.bean.WxCpUserDetail; +import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; /** *
@@ -87,6 +87,6 @@ public class WxCpOAuth2ServiceImpl implements WxCpOAuth2Service {
     JsonObject param = new JsonObject();
     param.addProperty("user_ticket", userTicket);
     String responseText = this.mainService.post(url, param.toString());
-    return new GsonBuilder().create().fromJson(responseText, WxCpUserDetail.class);
+    return WxCpGsonBuilder.create().fromJson(responseText, WxCpUserDetail.class);
   }
 }
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpTagServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpTagServiceImpl.java
index aa8260b1..22bb0fcf 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpTagServiceImpl.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpTagServiceImpl.java
@@ -1,6 +1,12 @@
 package me.chanjar.weixin.cp.api.impl;
 
-import com.google.gson.*;
+import java.util.List;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
 import com.google.gson.reflect.TypeToken;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.cp.api.WxCpService;
@@ -11,8 +17,6 @@ import me.chanjar.weixin.cp.bean.WxCpTagGetResult;
 import me.chanjar.weixin.cp.bean.WxCpUser;
 import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 
-import java.util.List;
-
 /**
  * 
  *  标签管理接口
@@ -57,7 +61,7 @@ public class WxCpTagServiceImpl implements WxCpTagService {
     String url = "https://qyapi.weixin.qq.com/cgi-bin/tag/list";
     String responseContent = this.mainService.get(url, null);
     JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
-    return WxCpGsonBuilder.INSTANCE.create()
+    return WxCpGsonBuilder.create()
       .fromJson(
         tmpJsonElement.getAsJsonObject().get("taglist"),
         new TypeToken>() {
@@ -70,7 +74,7 @@ public class WxCpTagServiceImpl implements WxCpTagService {
     String url = "https://qyapi.weixin.qq.com/cgi-bin/tag/get?tagid=" + tagId;
     String responseContent = this.mainService.get(url, null);
     JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
-    return WxCpGsonBuilder.INSTANCE.create()
+    return WxCpGsonBuilder.create()
       .fromJson(
         tmpJsonElement.getAsJsonObject().get("userlist"),
         new TypeToken>() {
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java
index 68224b1e..4f6990cc 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java
@@ -90,7 +90,7 @@ public class WxCpUserServiceImpl implements WxCpUserService {
 
     String responseContent = this.mainService.get(url, params);
     JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
-    return WxCpGsonBuilder.INSTANCE.create()
+    return WxCpGsonBuilder.create()
       .fromJson(tmpJsonElement.getAsJsonObject().get("userlist"),
         new TypeToken>() {
         }.getType()
@@ -112,7 +112,7 @@ public class WxCpUserServiceImpl implements WxCpUserService {
 
     String responseContent = this.mainService.get(url, params);
     JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
-    return WxCpGsonBuilder.INSTANCE.create()
+    return WxCpGsonBuilder.create()
       .fromJson(
         tmpJsonElement.getAsJsonObject().get("userlist"),
         new TypeToken>() {
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpAgent.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpAgent.java
index b70571f0..18dfb346 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpAgent.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpAgent.java
@@ -1,5 +1,8 @@
 package me.chanjar.weixin.cp.bean;
 
+import java.io.Serializable;
+import java.util.List;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -7,9 +10,6 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 
-import java.io.Serializable;
-import java.util.List;
-
 /**
  * 
  * 企业号应用信息.
@@ -80,12 +80,14 @@ public class WxCpAgent implements Serializable {
 
   @Data
   public static class Users implements Serializable {
+    private static final long serialVersionUID = 8801100463558788565L;
     @SerializedName("user")
     private List users;
   }
 
   @Data
   public class User implements Serializable {
+    private static final long serialVersionUID = 7287632514385508024L;
     @SerializedName("userid")
     private String userId;
   }
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpInviteResult.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpInviteResult.java
index f6ff4634..871e4839 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpInviteResult.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpInviteResult.java
@@ -5,8 +5,6 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import com.google.common.base.Splitter;
 import com.google.gson.annotations.SerializedName;
@@ -25,11 +23,11 @@ public class WxCpInviteResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxCpGsonBuilder.create().toJson(this);
   }
 
   public static WxCpInviteResult fromJson(String json) {
-    return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxCpInviteResult.class);
+    return WxCpGsonBuilder.create().fromJson(json, WxCpInviteResult.class);
   }
 
   @SerializedName("errcode")
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessage.java
index 58fc9830..d28c178c 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessage.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessage.java
@@ -1,16 +1,23 @@
 package me.chanjar.weixin.cp.bean;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
 import lombok.Data;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.cp.bean.article.MpnewsArticle;
 import me.chanjar.weixin.cp.bean.article.NewArticle;
-import me.chanjar.weixin.cp.bean.messagebuilder.*;
+import me.chanjar.weixin.cp.bean.messagebuilder.FileBuilder;
+import me.chanjar.weixin.cp.bean.messagebuilder.ImageBuilder;
+import me.chanjar.weixin.cp.bean.messagebuilder.MpnewsBuilder;
+import me.chanjar.weixin.cp.bean.messagebuilder.NewsBuilder;
+import me.chanjar.weixin.cp.bean.messagebuilder.TextBuilder;
+import me.chanjar.weixin.cp.bean.messagebuilder.TextCardBuilder;
+import me.chanjar.weixin.cp.bean.messagebuilder.VideoBuilder;
+import me.chanjar.weixin.cp.bean.messagebuilder.VoiceBuilder;
 import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * 消息.
  *
@@ -114,7 +121,7 @@ public class WxCpMessage implements Serializable {
   }
 
   public String toJson() {
-    return WxCpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxCpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java
index 9d0a85b6..d850adeb 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java
@@ -5,8 +5,6 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import com.google.common.base.Splitter;
 import com.google.gson.annotations.SerializedName;
@@ -25,11 +23,11 @@ public class WxCpMessageSendResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxCpGsonBuilder.create().toJson(this);
   }
 
   public static WxCpMessageSendResult fromJson(String json) {
-    return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxCpMessageSendResult.class);
+    return WxCpGsonBuilder.create().fromJson(json, WxCpMessageSendResult.class);
   }
 
   @SerializedName("errcode")
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTag.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTag.java
index 360ddd28..f6b9fa02 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTag.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTag.java
@@ -1,14 +1,15 @@
 package me.chanjar.weixin.cp.bean;
 
+import java.io.Serializable;
+
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 
-import java.io.Serializable;
-
 /**
  * Created by Daniel Qian.
+ * @author Daniel Qian
  */
 @Data
 @AllArgsConstructor
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTagAddOrRemoveUsersResult.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTagAddOrRemoveUsersResult.java
index 67d90978..037740ca 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTagAddOrRemoveUsersResult.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTagAddOrRemoveUsersResult.java
@@ -5,8 +5,6 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import com.google.common.base.Splitter;
 import com.google.gson.annotations.SerializedName;
@@ -25,11 +23,11 @@ public class WxCpTagAddOrRemoveUsersResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxCpGsonBuilder.create().toJson(this);
   }
 
   public static WxCpTagAddOrRemoveUsersResult fromJson(String json) {
-    return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxCpTagAddOrRemoveUsersResult.class);
+    return WxCpGsonBuilder.create().fromJson(json, WxCpTagAddOrRemoveUsersResult.class);
   }
 
   @SerializedName("errcode")
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java
index f3d5aa22..233d4576 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java
@@ -50,11 +50,11 @@ public class WxCpUser implements Serializable {
   }
 
   public static WxCpUser fromJson(String json) {
-    return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxCpUser.class);
+    return WxCpGsonBuilder.create().fromJson(json, WxCpUser.class);
   }
 
   public String toJson() {
-    return WxCpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxCpGsonBuilder.create().toJson(this);
   }
 
   @Data
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java
index abb880d2..cab4970b 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java
@@ -7,8 +7,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
@@ -18,6 +16,7 @@ import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
 import me.chanjar.weixin.cp.config.WxCpConfigStorage;
 import me.chanjar.weixin.cp.util.crypto.WxCpCryptUtil;
+import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 import me.chanjar.weixin.cp.util.xml.XStreamTransformer;
 
 /**
@@ -378,7 +377,7 @@ public class WxCpXmlMessage implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxCpGsonBuilder.create().toJson(this);
   }
 
   @Data
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java
index 707188a2..1b9f8a61 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java
@@ -2,11 +2,9 @@ package me.chanjar.weixin.cp.config;
 
 import java.io.File;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 
 /**
  * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化
@@ -203,7 +201,7 @@ public class WxCpInMemoryConfigStorage implements WxCpConfigStorage {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxCpGsonBuilder.create().toJson(this);
   }
 
   @Override
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpGsonBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpGsonBuilder.java
index f4dc691e..6ff49bf0 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpGsonBuilder.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpGsonBuilder.java
@@ -15,7 +15,7 @@ import me.chanjar.weixin.cp.bean.WxCpUser;
  */
 public class WxCpGsonBuilder {
 
-  public static final GsonBuilder INSTANCE = new GsonBuilder();
+  private static final GsonBuilder INSTANCE = new GsonBuilder();
 
   static {
     INSTANCE.disableHtmlEscaping();
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaTemplateServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaTemplateServiceImpl.java
index 9570c07a..3ecb484d 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaTemplateServiceImpl.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaTemplateServiceImpl.java
@@ -1,5 +1,9 @@
 package cn.binarywang.wx.miniapp.api.impl;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.api.WxMaTemplateService;
 import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateAddResult;
@@ -10,15 +14,11 @@ import me.chanjar.weixin.common.error.WxError;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 public class WxMaTemplateServiceImpl implements WxMaTemplateService {
 
   private WxMaService wxMaService;
 
-  public WxMaTemplateServiceImpl(WxMaService wxMaService){
+  public WxMaTemplateServiceImpl(WxMaService wxMaService) {
     this.wxMaService = wxMaService;
   }
 
@@ -31,9 +31,9 @@ public class WxMaTemplateServiceImpl implements WxMaTemplateService {
 
     String responseText = this.wxMaService.post(TEMPLATE_LIBRARY_LIST_URL, WxGsonBuilder.create().toJson(params));
     WxError wxError = WxError.fromJson(responseText);
-    if(wxError.getErrorCode() == 0){
+    if (wxError.getErrorCode() == 0) {
       return WxMaTemplateLibraryListResult.fromJson(responseText);
-    }else {
+    } else {
       throw new WxErrorException(wxError);
     }
   }
@@ -46,9 +46,9 @@ public class WxMaTemplateServiceImpl implements WxMaTemplateService {
 
     String responseText = this.wxMaService.post(TEMPLATE_LIBRARY_KEYWORD_URL, WxGsonBuilder.create().toJson(params));
     WxError wxError = WxError.fromJson(responseText);
-    if(wxError.getErrorCode() == 0){
+    if (wxError.getErrorCode() == 0) {
       return WxMaTemplateLibraryGetResult.fromJson(responseText);
-    }else {
+    } else {
       throw new WxErrorException(wxError);
     }
   }
@@ -62,9 +62,9 @@ public class WxMaTemplateServiceImpl implements WxMaTemplateService {
 
     String responseText = this.wxMaService.post(TEMPLATE_ADD_URL, WxGsonBuilder.create().toJson(params));
     WxError wxError = WxError.fromJson(responseText);
-    if(wxError.getErrorCode() == 0){
+    if (wxError.getErrorCode() == 0) {
       return WxMaTemplateAddResult.fromJson(responseText);
-    }else {
+    } else {
       throw new WxErrorException(wxError);
     }
   }
@@ -78,9 +78,9 @@ public class WxMaTemplateServiceImpl implements WxMaTemplateService {
 
     String responseText = this.wxMaService.post(TEMPLATE_LIST_URL, WxGsonBuilder.create().toJson(params));
     WxError wxError = WxError.fromJson(responseText);
-    if(wxError.getErrorCode() == 0){
+    if (wxError.getErrorCode() == 0) {
       return WxMaTemplateListResult.fromJson(responseText);
-    }else {
+    } else {
       throw new WxErrorException(wxError);
     }
   }
@@ -92,9 +92,9 @@ public class WxMaTemplateServiceImpl implements WxMaTemplateService {
 
     String responseText = this.wxMaService.post(TEMPLATE_DEL_URL, WxGsonBuilder.create().toJson(params));
     WxError wxError = WxError.fromJson(responseText);
-    if(wxError.getErrorCode() == 0){
+    if (wxError.getErrorCode() == 0) {
       return true;
-    }else {
+    } else {
       throw new WxErrorException(wxError);
     }
   }
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java
index d44d1556..1152820d 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java
@@ -6,8 +6,6 @@ import java.io.Serializable;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import cn.binarywang.wx.miniapp.config.WxMaConfig;
 import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
@@ -168,7 +166,7 @@ public class WxMaMessage implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return this.toJson();
   }
 
   public String toJson() {
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java
index 64f1ebb1..a0e53262 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java
@@ -1,14 +1,13 @@
 package cn.binarywang.wx.miniapp.config;
 
-import me.chanjar.weixin.common.bean.WxAccessToken;
-import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.io.File;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
+import me.chanjar.weixin.common.bean.WxAccessToken;
+import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+
 /**
  * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化
  *
@@ -224,7 +223,7 @@ public class WxMaInMemoryConfig implements WxMaConfig {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMaGsonBuilder.create().toJson(this);
   }
 
   @Override
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java
index eb15cd0f..e4937ec0 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java
@@ -4,11 +4,9 @@ import java.io.File;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化
@@ -250,7 +248,7 @@ public class WxMpInMemoryConfigStorage implements WxMpConfigStorage {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   @Override
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java
index bc1a0724..51c87fdc 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java
@@ -1,6 +1,18 @@
 package me.chanjar.weixin.mp.api.impl;
 
-import com.google.gson.*;
+import java.util.Arrays;
+import java.util.concurrent.locks.Lock;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
 import com.google.gson.reflect.TypeToken;
 import me.chanjar.weixin.common.bean.WxCardApiSignature;
 import me.chanjar.weixin.common.error.WxError;
@@ -15,12 +27,6 @@ import me.chanjar.weixin.mp.bean.card.WxMpCardLandingPageCreateResult;
 import me.chanjar.weixin.mp.bean.card.WxMpCardQrcodeCreateResult;
 import me.chanjar.weixin.mp.bean.result.WxMpCardResult;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.concurrent.locks.Lock;
 
 /**
  * Created by Binary Wang on 2016/7/27.
@@ -31,7 +37,7 @@ public class WxMpCardServiceImpl implements WxMpCardService {
 
   private WxMpService wxMpService;
 
-  private static final Gson GSON = new Gson();
+  private static final Gson GSON = WxMpGsonBuilder.create();
 
   public WxMpCardServiceImpl(WxMpService wxMpService) {
     this.wxMpService = wxMpService;
@@ -156,7 +162,7 @@ public class WxMpCardServiceImpl implements WxMpCardService {
     param.addProperty("check_consume", checkConsume);
     String responseContent = this.wxMpService.post(CARD_CODE_GET, param.toString());
     JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(tmpJsonElement,
+    return WxMpGsonBuilder.create().fromJson(tmpJsonElement,
       new TypeToken() {
       }.getType());
   }
@@ -213,7 +219,7 @@ public class WxMpCardServiceImpl implements WxMpCardService {
     param.addProperty("is_mark", isMark);
     String responseContent = this.getWxMpService().post(CARD_CODE_MARK, param.toString());
     JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
-    WxMpCardResult cardResult = WxMpGsonBuilder.INSTANCE.create().fromJson(tmpJsonElement,
+    WxMpCardResult cardResult = WxMpGsonBuilder.create().fromJson(tmpJsonElement,
       new TypeToken() {
       }.getType());
     if (!"0".equals(cardResult.getErrorCode())) {
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java
index 1eaf41df..8a460658 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java
@@ -1,5 +1,14 @@
 package me.chanjar.weixin.mp.api.impl;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import com.google.gson.Gson;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
@@ -9,20 +18,25 @@ import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 import me.chanjar.weixin.mp.api.WxMpMemberCardService;
 import me.chanjar.weixin.mp.api.WxMpService;
-import me.chanjar.weixin.mp.bean.card.*;
+import me.chanjar.weixin.mp.bean.card.AdvancedInfo;
+import me.chanjar.weixin.mp.bean.card.BaseInfo;
+import me.chanjar.weixin.mp.bean.card.DateInfo;
+import me.chanjar.weixin.mp.bean.card.MemberCard;
+import me.chanjar.weixin.mp.bean.card.MemberCardActivateUserFormRequest;
+import me.chanjar.weixin.mp.bean.card.MemberCardActivateUserFormResult;
+import me.chanjar.weixin.mp.bean.card.MemberCardCreateRequest;
+import me.chanjar.weixin.mp.bean.card.WxMpCardCreateResult;
 import me.chanjar.weixin.mp.bean.card.enums.BusinessServiceType;
 import me.chanjar.weixin.mp.bean.card.enums.CardColor;
 import me.chanjar.weixin.mp.bean.card.enums.DateInfoType;
-import me.chanjar.weixin.mp.bean.membercard.*;
+import me.chanjar.weixin.mp.bean.membercard.ActivatePluginParam;
+import me.chanjar.weixin.mp.bean.membercard.ActivatePluginParamResult;
+import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardActivatedMessage;
+import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardCreateMessage;
+import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateMessage;
+import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateResult;
+import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.HashMap;
-import java.util.Map;
 
 /**
  * 会员卡相关接口的实现类
@@ -36,7 +50,7 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService {
 
   private WxMpService wxMpService;
 
-  private static final Gson GSON = new Gson();
+  private static final Gson GSON = WxMpGsonBuilder.create();
 
   WxMpMemberCardServiceImpl(WxMpService wxMpService) {
     this.wxMpService = wxMpService;
@@ -244,7 +258,7 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService {
     String responseContent = this.getWxMpService().post(MEMBER_CARD_USER_INFO_GET, jsonObject.toString());
     log.debug("{}", responseContent);
     JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(tmpJsonElement,
+    return WxMpGsonBuilder.create().fromJson(tmpJsonElement,
       new TypeToken() {
       }.getType());
   }
@@ -267,7 +281,7 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService {
     String responseContent = this.getWxMpService().post(MEMBER_CARD_UPDATE_USER, GSON.toJson(updateUserMessage));
 
     JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(tmpJsonElement,
+    return WxMpGsonBuilder.create().fromJson(tmpJsonElement,
       new TypeToken() {
       }.getType());
   }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserBlacklistServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserBlacklistServiceImpl.java
index 561d7c04..a6ba958e 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserBlacklistServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserBlacklistServiceImpl.java
@@ -1,16 +1,16 @@
 package me.chanjar.weixin.mp.api.impl;
 
-import com.google.gson.Gson;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import com.google.gson.JsonObject;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.WxMpUserBlacklistService;
 import me.chanjar.weixin.mp.bean.result.WxMpUserBlacklistGetResult;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * @author miller
@@ -37,14 +37,15 @@ public class WxMpUserBlacklistServiceImpl implements WxMpUserBlacklistService {
     Map map = new HashMap<>();
     map.put("openid_list", openidList);
     String url = API_BLACKLIST_PREFIX + "/batchblacklist";
-    this.wxMpService.execute(SimplePostRequestExecutor.create(this.wxMpService.getRequestHttp()), url, new Gson().toJson(map));
+    this.wxMpService.execute(SimplePostRequestExecutor.create(this.wxMpService.getRequestHttp()), url,
+      WxMpGsonBuilder.create().toJson(map));
   }
 
   @Override
   public void pullFromBlacklist(List openidList) throws WxErrorException {
-    Map map = new HashMap<>();
+    Map map = new HashMap<>(2);
     map.put("openid_list", openidList);
     String url = API_BLACKLIST_PREFIX + "/batchunblacklist";
-    this.wxMpService.execute(SimplePostRequestExecutor.create(this.wxMpService.getRequestHttp()), url, new Gson().toJson(map));
+    this.wxMpService.execute(SimplePostRequestExecutor.create(this.wxMpService.getRequestHttp()), url, WxMpGsonBuilder.create().toJson(map));
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpCard.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpCard.java
index 622dca9e..71e419a7 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpCard.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpCard.java
@@ -3,19 +3,17 @@ package me.chanjar.weixin.mp.bean;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 微信卡券
+ * 微信卡券.
  *
  * @author YuJian
  * @version 15/11/11
  */
 @Data
-public class WxMpCard implements Serializable{
+public class WxMpCard implements Serializable {
   private static final long serialVersionUID = 9214301870017772921L;
 
   private String cardId;
@@ -30,6 +28,6 @@ public class WxMpCard implements Serializable{
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassNews.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassNews.java
index 5dd8c2ad..a2b35b7c 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassNews.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassNews.java
@@ -4,9 +4,6 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -26,7 +23,7 @@ public class WxMpMassNews implements Serializable {
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public boolean isEmpty() {
@@ -35,7 +32,7 @@ public class WxMpMassNews implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   /**
@@ -85,7 +82,7 @@ public class WxMpMassNews implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassOpenIdsMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassOpenIdsMessage.java
index 742b0165..ce1d77b6 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassOpenIdsMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassOpenIdsMessage.java
@@ -51,7 +51,7 @@ public class WxMpMassOpenIdsMessage implements Serializable {
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   /**
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassPreviewMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassPreviewMessage.java
index 512c454c..dca743c9 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassPreviewMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassPreviewMessage.java
@@ -36,6 +36,6 @@ public class WxMpMassPreviewMessage implements Serializable {
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassTagMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassTagMessage.java
index 9487124c..0a72814a 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassTagMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassTagMessage.java
@@ -54,7 +54,7 @@ public class WxMpMassTagMessage implements Serializable {
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public void setSendAll(boolean sendAll) {
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassVideo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassVideo.java
index d536ff98..2271e353 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassVideo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassVideo.java
@@ -19,6 +19,6 @@ public class WxMpMassVideo implements Serializable {
   private String description;
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpShakeInfoResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpShakeInfoResult.java
index 313cfaba..4cd64300 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpShakeInfoResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpShakeInfoResult.java
@@ -22,7 +22,7 @@ public class WxMpShakeInfoResult implements Serializable {
   private ShakeInfoData data;
 
   public static WxMpShakeInfoResult fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpShakeInfoResult.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpShakeInfoResult.class);
   }
 
   @Data
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/Abstract.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/Abstract.java
index 985cdb0a..11e4f3a3 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/Abstract.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/Abstract.java
@@ -1,33 +1,35 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 封面摘要
- * author:yuanqixun
+ * 封面摘要.
+ * @author yuanqixun
  * date:2018-08-25 00:35
  */
 @Data
 public class Abstract implements Serializable {
+  private static final long serialVersionUID = -2612656133201770573L;
 
   /**
-   * 摘要
+   * 摘要.
    */
   @SerializedName("abstract")
   private String abstractInfo;
 
   /**
-   * 封面图片列表,仅支持填入一 个封面图片链接, 上传图片接口 上传获取图片获得链接,填写 非CDN链接会报错,并在此填入。 建议图片尺寸像素850*350
+   * 封面图片列表.
+   * 仅支持填入一 个封面图片链接, 上传图片接口 上传获取图片获得链接,填写 非CDN链接会报错,并在此填入。 建议图片尺寸像素850*350
    */
   @SerializedName("icon_url_list")
   private String iconUrlList;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java
index 73fd0135..f127c8ec 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java
@@ -1,23 +1,22 @@
 package me.chanjar.weixin.mp.bean.card;
 
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-import me.chanjar.weixin.mp.bean.card.enums.BusinessServiceType;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
-//子对象列表
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+import me.chanjar.weixin.mp.bean.card.enums.BusinessServiceType;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 微信会员卡高级字段信息
- * author:yuanqixun
+ * 微信会员卡高级字段信息.
+ * @author yuanqixun
  * date:2018-08-25 00:36
  */
 @Data
 public class AdvancedInfo implements Serializable {
+  private static final long serialVersionUID = -8470424140133771841L;
 
 //    public AdvancedInfo(){
 //        useCondition = new UseCondition();
@@ -27,50 +26,56 @@ public class AdvancedInfo implements Serializable {
 //    }
 
   /**
-   * 使用门槛(条件),若不填写使用条件则在券面拼写 :无最低消费限制,全场通用,不限品类;并在使用说明显示: 可与其他优惠共享
+   * 使用门槛(条件).
+   * 若不填写使用条件则在券面拼写 :无最低消费限制,全场通用,不限品类;并在使用说明显示: 可与其他优惠共享
    */
   @SerializedName("use_condition")
   private UseCondition useCondition;
 
   /**
-   * 封面摘要
+   * 封面摘要.
    */
   @SerializedName("abstract")
   private Abstract abstractInfo;
 
   /**
-   * 图文列表,显示在详情内页 ,优惠券券开发者须至少传入 一组图文列表
+   * 图文列表.
+   * 显示在详情内页 ,优惠券券开发者须至少传入 一组图文列表
    */
   @SerializedName("text_image_list")
   private List textImageList;
 
   /**
-   * 商家服务类型,数组类型:BIZ_SERVICE_DELIVER 外卖服务; BIZ_SERVICE_FREE_PARK 停车位; BIZ_SERVICE_WITH_PET 可带宠物; BIZ_SERVICE_FREE_WIFI 免费wifi, 可多选
+   * 商家服务类型.
+   * 数组类型:BIZ_SERVICE_DELIVER 外卖服务; BIZ_SERVICE_FREE_PARK 停车位; BIZ_SERVICE_WITH_PET 可带宠物; BIZ_SERVICE_FREE_WIFI 免费wifi, 可多选
    */
   @SerializedName("business_service")
   private List businessServiceList;
 
   /**
-   * 使用时段限制
+   * 使用时段限制.
    */
   @SerializedName("time_limit")
   private TimeLimit timeLimit;
 
   /**
-   * 是否可以分享朋友
+   * 是否可以分享朋友.
    */
   @SerializedName("share_friends")
   private Boolean shareFriends;
 
   public void addBusinessService(BusinessServiceType businessServiceType) {
     if (businessServiceType != null) {
-      if (businessServiceList == null)
-        businessServiceList = new ArrayList();
+      if (businessServiceList == null){
+        businessServiceList = new ArrayList<>();
+      }
+
       businessServiceList.add(businessServiceType.name());
     }
   }
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BaseInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BaseInfo.java
index bdd0b359..c968b599 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BaseInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BaseInfo.java
@@ -1,196 +1,198 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
-//子对象列表
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 微信会员卡基本信息
- * author:yuanqixun
+ * 微信会员卡基本信息.
+ * @author yuanqixun
  * date:2018-08-25 00:36
  */
 @Data
 public class BaseInfo implements Serializable {
 
   /**
-   * 卡券的商户logo,建议像素为300*300。
+   * 卡券的商户logo,建议像素为300*300.
    */
   @SerializedName("logo_url")
   private String logoUrl;
 
   /**
-   * Code展示类型,"CODE_TYPE_TEXT" 文本 "CODE_TYPE_BARCODE" 一维码 "CODE_TYPE_QRCODE" 二维码 "CODE_TYPE_ONLY_QRCODE" 仅显示二维码 "CODE_TYPE_ONLY_BARCODE" 仅显示一维码 "CODE_TYPE_NONE" 不显示任何码型
+   * Code展示类型.
+   * "CODE_TYPE_TEXT" 文本 "CODE_TYPE_BARCODE" 一维码 "CODE_TYPE_QRCODE" 二维码 "CODE_TYPE_ONLY_QRCODE" 仅显示二维码 "CODE_TYPE_ONLY_BARCODE" 仅显示一维码 "CODE_TYPE_NONE" 不显示任何码型
    */
   @SerializedName("code_type")
   private String codeType = "CODE_TYPE_QRCODE";
 
   /**
-   * 支付功能结构体,swipe_card结构
+   * 支付功能结构体,swipe_card结构.
    */
   @SerializedName("pay_info")
   private PayInfo payInfo;
 
   /**
-   * 是否设置该会员卡中部的按钮同时支持微信支付刷卡和会员卡二维码
+   * 是否设置该会员卡中部的按钮同时支持微信支付刷卡和会员卡二维码.
    */
   @SerializedName("is_pay_and_qrcode")
   private boolean isPayAndQrcode;
 
   /**
-   * 商户名字,字数上限为12个汉字
+   * 商户名字,字数上限为12个汉字.
    */
   @SerializedName("brand_name")
   private String brandName;
 
   /**
-   * 卡券名,字数上限为9个汉字 (建议涵盖卡券属性、服务及金额)。
+   * 卡券名,字数上限为9个汉字 (建议涵盖卡券属性、服务及金额).
    */
   @SerializedName("title")
   private String title;
 
   /**
-   * 券颜色,按色彩规范标注填写Color010-Color100
+   * 券颜色,按色彩规范标注填写Color010-Color100.
    */
   @SerializedName("color")
   private String color;
 
   /**
-   * 卡券使用提醒,字数上限为16个汉字
+   * 卡券使用提醒,字数上限为16个汉字.
    */
   @SerializedName("notice")
   private String notice;
 
   /**
-   * 卡券使用说明,字数上限为1024个汉字。
+   * 卡券使用说明,字数上限为1024个汉字.
    */
   @SerializedName("description")
   private String description;
 
   /**
-   * 商品信息
+   * 商品信息.
    */
   @SerializedName("sku")
   private Sku sku;
 
   /**
-   * 使用日期,有效期的信息。
+   * 使用日期,有效期的信息.
    */
   @SerializedName("date_info")
   private DateInfo dateInfo;
 
   /**
-   * 是否自定义Code码,填写true或false,默认为false 通常自有优惠码系统的开发者选择自定义Code码,详情见 是否自定义code
+   * 是否自定义Code码,填写true或false.
+   * 默认为false 通常自有优惠码系统的开发者选择自定义Code码,详情见 是否自定义code
    */
   @SerializedName("use_custom_code")
   private boolean useCustomCode;
 
   /**
-   * 是否指定用户领取,填写true或false。默认为false
+   * 是否指定用户领取,填写true或false。默认为false.
    */
   @SerializedName("bind_openid")
   private boolean bindOpenid;
 
   /**
-   * 客服电话
+   * 客服电话.
    */
   @SerializedName("service_phone")
   private String servicePhone;
 
   /**
-   * 门店位置ID,调用 POI门店管理接口 获取门店位置ID。
+   * 门店位置ID,调用 POI门店管理接口 获取门店位置ID.
    */
   @SerializedName("location_id_list")
   private String locationIdList;
 
   /**
-   * 会员卡是否支持全部门店,填写后商户门店更新时会自动同步至卡券
+   * 会员卡是否支持全部门店,填写后商户门店更新时会自动同步至卡券.
    */
   @SerializedName("use_all_locations")
   private boolean useAllLocations = true;
 
   /**
-   * 卡券中部居中的按钮,仅在卡券激活后且可用状态 时显示
+   * 卡券中部居中的按钮,仅在卡券激活后且可用状态 时显示.
    */
   @SerializedName("center_title")
   private String centerTitle;
 
   /**
-   * 显示在入口下方的提示语,仅在卡券激活后且可用状态时显示
+   * 显示在入口下方的提示语,仅在卡券激活后且可用状态时显示.
    */
   @SerializedName("center_sub_title")
   private String centerSubTitle;
 
   /**
-   * 顶部居中的url,仅在卡券激活后且可用状态时显示
+   * 顶部居中的url,仅在卡券激活后且可用状态时显示.
    */
   @SerializedName("center_url")
   private String centerUrl;
 
   /**
-   * 自定义跳转外链的入口名字
+   * 自定义跳转外链的入口名字.
    */
   @SerializedName("custom_url_name")
   private String customUrlName;
 
   /**
-   * 自定义跳转的URL
+   * 自定义跳转的URL.
    */
   @SerializedName("custom_url")
   private String customUrl;
 
   /**
-   * 显示在入口右侧的提示语
+   * 显示在入口右侧的提示语.
    */
   @SerializedName("custom_url_sub_title")
   private String customUrlSubTitle;
 
   /**
-   * 营销场景的自定义入口名称
+   * 营销场景的自定义入口名称.
    */
   @SerializedName("promotion_url_name")
   private String promotionUrlName;
 
   /**
-   * 入口跳转外链的地址链接
+   * 入口跳转外链的地址链接.
    */
   @SerializedName("promotion_url")
   private String promotionUrl;
 
   /**
-   * 显示在营销入口右侧的提示语
+   * 显示在营销入口右侧的提示语.
    */
   @SerializedName("promotion_url_sub_title")
   private String promotionUrlSubTitle;
 
   /**
-   * 每人可领券的数量限制,建议会员卡每人限领一张
+   * 每人可领券的数量限制,建议会员卡每人限领一张.
    */
   @SerializedName("get_limit")
   private Integer getLimit = 1;
 
   /**
-   * 卡券领取页面是否可分享,默认为true
+   * 卡券领取页面是否可分享,默认为true.
    */
   @SerializedName("can_share")
   private boolean canShare;
 
   /**
-   * 卡券是否可转赠,默认为true
+   * 卡券是否可转赠,默认为true.
    */
   @SerializedName("can_give_friend")
   private boolean canGiveFriend;
 
   /**
-   * 用户点击进入会员卡时推送事件,填写true为用户点击进入会员卡时推送事件,默认为false。详情见 进入会员卡事件推送
+   * 用户点击进入会员卡时推送事件.
+   * 填写true为用户点击进入会员卡时推送事件,默认为false。详情见 进入会员卡事件推送
    */
   @SerializedName("need_push_on_view")
   private boolean needPushOnView;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BonusRule.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BonusRule.java
index 9b12d597..ea668ad0 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BonusRule.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BonusRule.java
@@ -1,69 +1,70 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 积分规则
- * author:yuanqixun
+ * 积分规则.
+ * @author yuanqixun
  * date:2018-08-25 00:33
  */
 @Data
 public class BonusRule implements Serializable {
+  private static final long serialVersionUID = -8698218402074475078L;
 
   /**
-   * 消费金额,以分为单位。
+   * 消费金额,以分为单位.
    */
   @SerializedName("cost_money_unit")
   private Integer costMoneyUnit;
 
   /**
-   * 对应增加的积分
+   * 对应增加的积分.
    */
   @SerializedName("increase_bonus")
   private Integer increaseBonus;
 
   /**
-   * 用户单次可获取的积分上限
+   * 用户单次可获取的积分上限.
    */
   @SerializedName("max_increase_bonus")
   private Integer maxIncreaseBonus;
 
   /**
-   * 初始设置积分
+   * 初始设置积分.
    */
   @SerializedName("init_increase_bonus")
   private Integer initIncreaseBonus;
 
   /**
-   * 每使用积分
+   * 每使用积分.
    */
   @SerializedName("cost_bonus_unit")
   private Integer costBonusUnit;
 
   /**
-   * 抵扣xx元,这里以分为单位)
+   * 抵扣xx元,这里以分为单位).
    */
   @SerializedName("reduce_money")
   private Integer reduceMoney;
 
   /**
-   * 抵扣条件,满xx元(这里以分为单位)可用。
+   * 抵扣条件,满xx元(这里以分为单位)可用.
    */
   @SerializedName("least_moneyto_use_bonus")
   private Integer leastMoneytoUseBonus;
 
   /**
-   * 抵扣条件,单笔最多使用xx积分。
+   * 抵扣条件,单笔最多使用xx积分.
    */
   @SerializedName("max_reduce_bonus")
   private Integer maxReduceBonus;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CustomCell1.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CustomCell1.java
index bfacd079..8789eca4 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CustomCell1.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CustomCell1.java
@@ -1,39 +1,40 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 自定义会员信息类目
- * author:yuanqixun
+ * 自定义会员信息类目.
+ * @author yuanqixun
  * date:2018-08-25 00:34
  */
 @Data
 public class CustomCell1 implements Serializable {
+  private static final long serialVersionUID = -6446192667149800447L;
 
   /**
-   * 入口名称
+   * 入口名称.
    */
   @SerializedName("name")
   private String name;
 
   /**
-   * 入口右侧提示语,6个汉字内。
+   * 入口右侧提示语,6个汉字内.
    */
   @SerializedName("tips")
   private String tips;
 
   /**
-   * 入口跳转链接。
+   * 入口跳转链接.
    */
   @SerializedName("url")
   private String url;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CustomField.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CustomField.java
index da7df64b..df9c2e6f 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CustomField.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CustomField.java
@@ -1,19 +1,19 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 自定义会员信息类目
- * author:yuanqixun
+ * 自定义会员信息类目.
+ * @author yuanqixun
  * date:2018-08-25 00:34
  */
 @Data
 public class CustomField implements Serializable {
+  private static final long serialVersionUID = -5364412812328198195L;
 
   /**
    * 半自定义名称,当开发者变更这类类目信息的value值时 可以选择触发系统模板消息通知用户。 FIELD_NAME_TYPE_LEVEL 等级 FIELD_NAME_TYPE_COUPON 优惠券 FIELD_NAME_TYPE_STAMP 印花 FIELD_NAME_TYPE_DISCOUNT 折扣 FIELD_NAME_TYPE_ACHIEVEMEN 成就 FIELD_NAME_TYPE_MILEAGE 里程 FIELD_NAME_TYPE_SET_POINTS 集点 FIELD_NAME_TYPE_TIMS 次数
@@ -37,7 +37,8 @@ public class CustomField implements Serializable {
     return nameType;
   }
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/DateInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/DateInfo.java
index a4296650..a3fac522 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/DateInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/DateInfo.java
@@ -1,51 +1,57 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 使用日期,有效期的信息
- * author:yuanqixun
+ * 使用日期,有效期的信息.
+ * @author yuanqixun
  * date:2018-08-25 00:31
  */
 @Data
 public class DateInfo implements Serializable {
+  private static final long serialVersionUID = 2734999880412106549L;
 
   /**
-   * 使用时间的类型,支持固定时长有效类型 固定日期有效类型 永久有效类型:DATE_TYPE_FIX_TERM_RANGE、DATE_TYPE_FIX_TERM 、DATE_TYPE_PERMANENT
+   * 使用时间的类型.
+   * 支持固定时长有效类型 固定日期有效类型 永久有效类型:DATE_TYPE_FIX_TERM_RANGE、DATE_TYPE_FIX_TERM 、DATE_TYPE_PERMANENT
    */
   @SerializedName("type")
   private String type = "DATE_TYPE_PERMANENT";
 
   /**
-   * 起用时间,type为DATE_TYPE_FIX_TIME_RANGE时专用, 表示起用时间。从1970年1月1日00:00:00至起用时间的秒数 ( 东八区时间,UTC+8,单位为秒 )
+   * 起用时间.
+   * type为DATE_TYPE_FIX_TIME_RANGE时专用, 表示起用时间。从1970年1月1日00:00:00至起用时间的秒数 ( 东八区时间,UTC+8,单位为秒 )
    */
   @SerializedName("begin_timestamp")
   private Long beginTimestamp;
 
   /**
-   * 结束时间,type为DATE_TYPE_FIX_TERM_RANGE时专用,表示结束时间 ( 东八区时间,UTC+8,单位为秒 )
+   * 结束时间.
+   * type为DATE_TYPE_FIX_TERM_RANGE时专用,表示结束时间 ( 东八区时间,UTC+8,单位为秒 )
    */
   @SerializedName("end_timestamp")
   private Long endTimestamp;
 
   /**
-   * 自领取后多少天内有效,type为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天内有效,领取后当天有效填写0(单位为天)
+   * 自领取后多少天内有效.
+   * type为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天内有效,领取后当天有效填写0(单位为天)
    */
   @SerializedName("fixed_term")
   private Integer fixedTerm;
 
   /**
-   * 自领取后多少天开始生效,type为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天开始生效。(单位为天)
+   * 自领取后多少天开始生效.
+   * type为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天开始生效。(单位为天)
    */
   @SerializedName("fixed_begin_term")
   private Integer fixedBeginTerm;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCard.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCard.java
index 48e28eff..b8b81399 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCard.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCard.java
@@ -1,152 +1,156 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
 
+/**
+ * .
+ * @author yuanqixun
+ */
 @Data
 public final class MemberCard implements Serializable {
+  private static final long serialVersionUID = 2922028551810647622L;
 
   /**
-   * 会员卡背景图
+   * 会员卡背景图.
    */
   @SerializedName("background_pic_url")
   private String backgroundPicUrl;
 
   /**
-   * 基本信息
+   * 基本信息.
    */
   @SerializedName("base_info")
   private BaseInfo baseInfo;
 
   /**
-   * 特权说明
+   * 特权说明.
    */
   @SerializedName("prerogative")
   private String prerogative;
 
   /**
-   * 自动激活
+   * 自动激活.
    */
   @SerializedName("auto_activate")
   private boolean autoActivate;
 
   /**
-   * 是否一键开卡
+   * 是否一键开卡.
    */
   @SerializedName("wx_activate")
   private boolean wxActivate;
 
   /**
-   * 显示积分
+   * 显示积分.
    */
   @SerializedName("supply_bonus")
   private boolean supplyBonus;
 
   /**
-   * 查看积分外链,设置跳转外链查看积分详情。仅适用于积分无法通过激活接口同步的情况下使用该字段。
+   * 查看积分外链,设置跳转外链查看积分详情。仅适用于积分无法通过激活接口同步的情况下使用该字段.
    */
   @SerializedName("bonus_url")
   private String bonusUrl;
 
   /**
-   * 支持储值
+   * 支持储值.
    */
   @SerializedName("supply_balance")
   private boolean supplyBalance;
 
   /**
-   * 余额外链,仅适用于余额无法通过激活接口同步的情况下使用该字段。
+   * 余额外链,仅适用于余额无法通过激活接口同步的情况下使用该字段.
    */
   @SerializedName("balance_url")
   private String balanceUrl;
 
   /**
-   * 自定义会员类目1,会员卡激活后显示
+   * 自定义会员类目1,会员卡激活后显示.
    */
   @SerializedName("custom_field1")
   private CustomField customField1;
 
   /**
-   * 自定义会员类目2
+   * 自定义会员类目2.
    */
   @SerializedName("custom_field2")
   private CustomField customField2;
 
   /**
-   * 自定义会员类目3
+   * 自定义会员类目3.
    */
   @SerializedName("custom_field3")
   private CustomField customField3;
 
   /**
-   * 积分清零规则
+   * 积分清零规则.
    */
   @SerializedName("bonus_cleared")
   private String bonusCleared;
 
   /**
-   * 积分规则
+   * 积分规则.
    */
   @SerializedName("bonus_rules")
   private String bonusRules;
 
   /**
-   * 储值规则
+   * 储值规则.
    */
   @SerializedName("balance_rules")
   private String balanceRules;
 
   /**
-   * 激活会员卡的url
+   * 激活会员卡的url.
    */
   @SerializedName("activate_url")
   private String activateUrl;
 
   /**
-   * 激活会原卡url对应的小程序user_name,仅可跳转该公众号绑定的小程序
+   * 激活会原卡url对应的小程序user_name,仅可跳转该公众号绑定的小程序.
    */
   @SerializedName("activate_app_brand_user_name")
   private String activateAppBrandUserName;
 
   /**
-   * 激活会原卡url对应的小程序path
+   * 激活会原卡url对应的小程序path.
    */
   @SerializedName("activate_app_brand_pass")
   private String activateAppBrandPass;
 
   /**
-   * 自定义会员信息类目,会员卡激活后显示。
+   * 自定义会员信息类目,会员卡激活后显示.
    */
   @SerializedName("custom_cell1")
   private CustomCell1 customCell1;
 
   /**
-   * 积分规则,JSON结构积分规则 。
+   * 积分规则,JSON结构积分规则.
    */
   @SerializedName("bonus_rule")
   private BonusRule bonusRule;
 
   /**
-   * 折扣,该会员卡享受的折扣优惠,填10就是九折。
+   * 折扣,该会员卡享受的折扣优惠,填10就是九折.
    */
   private Integer discount;
 
   /**
-   * 创建优惠券特有的高级字段
+   * 创建优惠券特有的高级字段.
    */
   @SerializedName("advanced_info")
   private AdvancedInfo advancedInfo;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public static MemberCard fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, MemberCard.class);
+    return WxMpGsonBuilder.create().fromJson(json, MemberCard.class);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardActivateUserFormResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardActivateUserFormResult.java
index c961676d..381feda1 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardActivateUserFormResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardActivateUserFormResult.java
@@ -1,11 +1,9 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
 
 @Data
 public class MemberCardActivateUserFormResult implements Serializable {
@@ -22,7 +20,7 @@ public class MemberCardActivateUserFormResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardCreateRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardCreateRequest.java
index 7e4139cb..b15cf225 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardCreateRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardCreateRequest.java
@@ -1,11 +1,10 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 @Data
 public class MemberCardCreateRequest implements Serializable {
@@ -15,7 +14,8 @@ public class MemberCardCreateRequest implements Serializable {
   @SerializedName("member_card")
   private MemberCard memberCard;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserForm.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserForm.java
index 14ef9f37..1087af38 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserForm.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserForm.java
@@ -1,24 +1,25 @@
 package me.chanjar.weixin.mp.bean.card;
 
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-import me.chanjar.weixin.mp.bean.card.enums.CardWechatFieldType;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.lang3.StringUtils;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+import me.chanjar.weixin.mp.bean.card.enums.CardWechatFieldType;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
+
 /**
- * 用户表单对象
+ * 用户表单对象.
  *
  * @author yuanqixun
  * @date 2018-08-30
  */
 @Data
 public class MemberCardUserForm implements Serializable {
+  private static final long serialVersionUID = -1142881966808073662L;
 
   /**
    * 当前结构(required_form或者optional_form )内的字段是否允许用户激活后再次修改,
@@ -49,44 +50,48 @@ public class MemberCardUserForm implements Serializable {
   /**
    * 添加富文本类型字段
    *
-   * @param fieldType
    */
   public void addRichField(MemberCardUserFormRichField field) {
-    if (field == null)
+    if (field == null) {
       return;
-    if (richFieldList == null)
+    }
+    if (richFieldList == null) {
       richFieldList = new ArrayList<>();
+    }
     richFieldList.add(field);
   }
 
   /**
    * 添加微信选项类型字段
    *
-   * @param fieldType
    */
   public void addWechatField(CardWechatFieldType fieldType) {
-    if (fieldType == null)
+    if (fieldType == null) {
       return;
-    if (wechatFieldIdList == null)
+    }
+    if (wechatFieldIdList == null) {
       wechatFieldIdList = new ArrayList<>();
+    }
     wechatFieldIdList.add(fieldType.name());
   }
 
   /**
    * 添加文本类型字段
    *
-   * @param fieldType
    */
   public void addCustomField(String field) {
-    if (StringUtils.isBlank(field))
+    if (StringUtils.isBlank(field)) {
       return;
-    if (customFieldList == null)
+    }
+    if (customFieldList == null) {
       customFieldList = new ArrayList<>();
+    }
     customFieldList.add(field);
   }
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserFormRichField.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserFormRichField.java
index 6605f9b6..e109ebc6 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserFormRichField.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserFormRichField.java
@@ -1,16 +1,15 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.bean.card.enums.CardRichFieldType;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.util.ArrayList;
-import java.util.List;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 富文本字段
+ * 富文本字段.
  *
  * @author yuanqixun
  * @date 2018-08-30
@@ -31,12 +30,14 @@ public class MemberCardUserFormRichField {
   private List valueList;
 
   public void add(String value) {
-    if (valueList == null)
+    if (valueList == null) {
       valueList = new ArrayList();
+    }
     valueList.add(value);
   }
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/PayInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/PayInfo.java
index 61fa8ccd..c16c55c9 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/PayInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/PayInfo.java
@@ -1,15 +1,14 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 支付功能
- * author:yuanqixun
+ * 支付功能.
+ * @author yuanqixun
  * date:2018-08-25 00:33
  */
 @Data
@@ -21,7 +20,8 @@ public class PayInfo implements Serializable {
   @SerializedName("swipe_card")
   private SwipeCard swipeCard;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/Sku.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/Sku.java
index 12db088d..504d56bf 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/Sku.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/Sku.java
@@ -1,15 +1,14 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 商品信息
- * author:yuanqixun
+ * 商品信息.
+ * @author yuanqixun
  * date:2018-08-25 00:32
  */
 @Data
@@ -21,7 +20,8 @@ public class Sku implements Serializable {
   @SerializedName("quantity")
   private Integer quantity = 100000000;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/SwipeCard.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/SwipeCard.java
index fa176942..2e50a3cb 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/SwipeCard.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/SwipeCard.java
@@ -1,15 +1,14 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 刷卡功能
- * author:yuanqixun
+ * 刷卡功能.
+ * @author yuanqixun
  * date:2018-08-25 00:33
  */
 @Data
@@ -21,7 +20,8 @@ public class SwipeCard implements Serializable {
   @SerializedName("is_swipe_card")
   private boolean isSwipeCard;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/TextImageList.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/TextImageList.java
index 5836d956..f974d1e4 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/TextImageList.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/TextImageList.java
@@ -1,15 +1,14 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 图文列表
- * author:yuanqixun
+ * 图文列表.
+ * @author yuanqixun
  * date:2018-08-25 00:35
  */
 @Data
@@ -22,12 +21,13 @@ public class TextImageList implements Serializable {
   private String imageUrl;
 
   /**
-   * 图文描述
+   * 图文描述.
    */
   @SerializedName("text")
   private String text;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/TimeLimit.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/TimeLimit.java
index 4c0d17d5..92bacfe1 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/TimeLimit.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/TimeLimit.java
@@ -1,16 +1,14 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
-//子对象列表
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * 使用时段限制
- * author:yuanqixun
+ * 使用时段限制.
+ * @author yuanqixun
  * date:2018-08-25 00:34
  */
 @Data
@@ -46,7 +44,8 @@ public class TimeLimit implements Serializable {
   @SerializedName("end_minute")
   private Integer endMinute;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/UseCondition.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/UseCondition.java
index ff8fa830..a62066df 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/UseCondition.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/UseCondition.java
@@ -1,16 +1,15 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 //子对象列表
 
 /**
  * 使用门槛
- * author:yuanqixun
+ * @author yuanqixun
  * date:2018-08-25 00:35
  */
 @Data
@@ -46,7 +45,8 @@ public class UseCondition implements Serializable {
   @SerializedName("can_use_with_other_discount")
   private boolean canUseWithOtherDiscount;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardCreateResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardCreateResult.java
index 24875d4e..60aded5a 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardCreateResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardCreateResult.java
@@ -1,13 +1,15 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
 
+/**
+ * .
+ * @author yuanqixun
+ */
 @Data
 public class WxMpCardCreateResult implements Serializable {
   private static final long serialVersionUID = -128818731449449537L;
@@ -40,7 +42,7 @@ public class WxMpCardCreateResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardLandingPageCreateRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardLandingPageCreateRequest.java
index 6a55a26a..162cbd0a 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardLandingPageCreateRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardLandingPageCreateRequest.java
@@ -1,15 +1,14 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
+import org.apache.commons.lang3.StringUtils;
+
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
 
 @Data
 public class WxMpCardLandingPageCreateRequest implements Serializable {
@@ -45,8 +44,9 @@ public class WxMpCardLandingPageCreateRequest implements Serializable {
 
   public void addCard(String cardId, String thumbUrl) {
     if (StringUtils.isNoneBlank(cardId, thumbUrl)) {
-      if (cardList == null)
+      if (cardList == null) {
         cardList = new JsonArray();
+      }
       JsonObject cardJson = new JsonObject();
       cardJson.addProperty("card_id", cardId);
       cardJson.addProperty("thumb_url", thumbUrl);
@@ -60,7 +60,7 @@ public class WxMpCardLandingPageCreateRequest implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardLandingPageCreateResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardLandingPageCreateResult.java
index f99b5f18..8d7c4960 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardLandingPageCreateResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardLandingPageCreateResult.java
@@ -1,12 +1,10 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
 
 @Data
 public class WxMpCardLandingPageCreateResult implements Serializable {
@@ -33,7 +31,7 @@ public class WxMpCardLandingPageCreateResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardQrcodeCreateResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardQrcodeCreateResult.java
index 46fb6323..d0140f35 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardQrcodeCreateResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/WxMpCardQrcodeCreateResult.java
@@ -1,12 +1,10 @@
 package me.chanjar.weixin.mp.bean.card;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
 
 @Data
 public class WxMpCardQrcodeCreateResult implements Serializable {
@@ -33,7 +31,7 @@ public class WxMpCardQrcodeCreateResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleResult.java
index 3901c61f..39198821 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleResult.java
@@ -1,13 +1,13 @@
 package me.chanjar.weixin.mp.bean.datacube;
 
+import java.util.List;
+
 import com.google.gson.annotations.SerializedName;
 import com.google.gson.reflect.TypeToken;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
-import java.util.List;
-
 /**
  * 图文分析数据接口返回结果对象
  * 

@@ -114,7 +114,7 @@ public class WxDataCubeArticleResult extends WxDataCubeBaseResult { private Integer userSource; public static List fromJson(String json) { - return WxMpGsonBuilder.INSTANCE.create().fromJson( + return WxMpGsonBuilder.create().fromJson( JSON_PARSER.parse(json).getAsJsonObject().get("list"), new TypeToken>() { }.getType()); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleTotal.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleTotal.java index bef0e66d..722b6c25 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleTotal.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleTotal.java @@ -1,13 +1,13 @@ package me.chanjar.weixin.mp.bean.datacube; +import java.util.List; + import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; import lombok.Data; import lombok.EqualsAndHashCode; import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; -import java.util.List; - /** * 图文分析数据接口返回结果对象. * Created by Binary Wang on 2016/8/24. @@ -41,7 +41,7 @@ public class WxDataCubeArticleTotal extends WxDataCubeBaseResult { private List details; public static List fromJson(String json) { - return WxMpGsonBuilder.INSTANCE.create().fromJson( + return WxMpGsonBuilder.create().fromJson( JSON_PARSER.parse(json).getAsJsonObject().get("list"), new TypeToken>() { }.getType()); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeBaseResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeBaseResult.java index ee2a7d93..f86035c6 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeBaseResult.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeBaseResult.java @@ -2,12 +2,10 @@ package me.chanjar.weixin.mp.bean.datacube; import java.io.Serializable; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - import com.google.gson.JsonParser; import com.google.gson.annotations.SerializedName; import lombok.Data; +import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; /** *

@@ -31,7 +29,7 @@ public abstract class WxDataCubeBaseResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeInterfaceResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeInterfaceResult.java
index b151c008..0207d288 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeInterfaceResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeInterfaceResult.java
@@ -56,7 +56,7 @@ public class WxDataCubeInterfaceResult extends WxDataCubeBaseResult {
   private Integer maxTimeCost;
 
   public static List fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(
+    return WxMpGsonBuilder.create().fromJson(
       JSON_PARSER.parse(json).getAsJsonObject().get("list"),
       new TypeToken>() {
       }.getType());
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeMsgResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeMsgResult.java
index 1e7e1f58..b8796009 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeMsgResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeMsgResult.java
@@ -69,7 +69,7 @@ public class WxDataCubeMsgResult extends WxDataCubeBaseResult {
   private Integer oriPageReadUser;
 
   public static List fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(
+    return WxMpGsonBuilder.create().fromJson(
       JSON_PARSER.parse(json).getAsJsonObject().get("list"),
       new TypeToken>() {
       }.getType());
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeUserCumulate.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeUserCumulate.java
index 5275e140..f26ac125 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeUserCumulate.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeUserCumulate.java
@@ -4,9 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
+import com.google.gson.GsonBuilder;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
 import lombok.Data;
@@ -31,7 +29,7 @@ public class WxDataCubeUserCumulate implements Serializable {
   private Integer cumulateUser;
 
   public static List fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(
+    return WxMpGsonBuilder.create().fromJson(
       JSON_PARSER.parse(json).getAsJsonObject().get("list"),
       new TypeToken>() {
       }.getType());
@@ -39,6 +37,6 @@ public class WxDataCubeUserCumulate implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeUserSummary.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeUserSummary.java
index 06d93821..4d28c7b9 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeUserSummary.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeUserSummary.java
@@ -4,9 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
+import com.google.gson.GsonBuilder;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
 import lombok.Data;
@@ -33,7 +31,7 @@ public class WxDataCubeUserSummary implements Serializable {
   private Integer cancelUser;
 
   public static List fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(
+    return WxMpGsonBuilder.create().fromJson(
       JSON_PARSER.parse(json).getAsJsonObject().get("list"),
       new TypeToken>() {
       }.getType());
@@ -41,6 +39,6 @@ public class WxDataCubeUserSummary implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceMsg.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceMsg.java
index 9e12a5bb..2b554abc 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceMsg.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceMsg.java
@@ -1,11 +1,9 @@
 package me.chanjar.weixin.mp.bean.device;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * @author keungtung.
@@ -26,6 +24,6 @@ public class WxDeviceMsg extends AbstractDeviceBean {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java
index 0e0d96f4..81635481 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java
@@ -24,7 +24,7 @@ public class WxDeviceQrCodeResult extends AbstractDeviceBean {
   private BaseResp baseResp;
 
   public static WxDeviceQrCodeResult fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxDeviceQrCodeResult.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxDeviceQrCodeResult.class);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/WxMpKefuMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/WxMpKefuMessage.java
index 2b243252..92c298a6 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/WxMpKefuMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/WxMpKefuMessage.java
@@ -117,7 +117,7 @@ public class WxMpKefuMessage implements Serializable {
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   @Data
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java
index f20c34d7..01633192 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java
@@ -43,7 +43,7 @@ public class WxMpKfAccountRequest implements Serializable {
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfSessionRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfSessionRequest.java
index 6cc00f5c..38b25461 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfSessionRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfSessionRequest.java
@@ -2,9 +2,6 @@ package me.chanjar.weixin.mp.bean.kefu.request;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -32,11 +29,11 @@ public class WxMpKfSessionRequest implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return this.toJson();
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java
index 76f25d9b..f14feb29 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java
@@ -2,12 +2,10 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 客服基本信息以及客服在线状态信息
@@ -81,7 +79,7 @@ public class WxMpKfInfo implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfList.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfList.java
index d7ac2043..cadfc8c7 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfList.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfList.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -21,12 +18,12 @@ public class WxMpKfList implements Serializable {
   private List kfList;
 
   public static WxMpKfList fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpKfList.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpKfList.class);
   }
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfMsgList.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfMsgList.java
index 01b262dd..af5559ea 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfMsgList.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfMsgList.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -29,11 +26,11 @@ public class WxMpKfMsgList implements Serializable {
   private Long msgId;
 
   public static WxMpKfMsgList fromJson(String responseContent) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(responseContent, WxMpKfMsgList.class);
+    return WxMpGsonBuilder.create().fromJson(responseContent, WxMpKfMsgList.class);
   }
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfMsgRecord.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfMsgRecord.java
index fc3a1471..325c66aa 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfMsgRecord.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfMsgRecord.java
@@ -2,11 +2,9 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  *
@@ -49,7 +47,7 @@ public class WxMpKfMsgRecord implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public String getWorker() {
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfOnlineList.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfOnlineList.java
index e1e8c298..7f7b7db8 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfOnlineList.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfOnlineList.java
@@ -3,9 +3,7 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
+import com.google.gson.GsonBuilder;
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -21,12 +19,12 @@ public class WxMpKfOnlineList implements Serializable {
   private List kfOnlineList;
 
   public static WxMpKfOnlineList fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpKfOnlineList.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpKfOnlineList.class);
   }
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSession.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSession.java
index c5e9b02a..3f4d49d2 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSession.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSession.java
@@ -2,11 +2,9 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * @author Binary Wang
@@ -43,7 +41,7 @@ public class WxMpKfSession implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionGetResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionGetResult.java
index 628bd7c4..2b833aa2 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionGetResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionGetResult.java
@@ -2,9 +2,7 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
+import com.google.gson.GsonBuilder;
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -29,12 +27,12 @@ public class WxMpKfSessionGetResult implements Serializable {
   private long createTime;
 
   public static WxMpKfSessionGetResult fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpKfSessionGetResult.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpKfSessionGetResult.class);
   }
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionList.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionList.java
index 4aacdd1e..37708a2b 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionList.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionList.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -24,13 +21,13 @@ public class WxMpKfSessionList implements Serializable {
   private List kfSessionList;
 
   public static WxMpKfSessionList fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json,
+    return WxMpGsonBuilder.create().fromJson(json,
       WxMpKfSessionList.class);
   }
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionWaitCaseList.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionWaitCaseList.java
index 69b5b915..2fb0ea56 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionWaitCaseList.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfSessionWaitCaseList.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.kefu.result;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -30,13 +27,13 @@ public class WxMpKfSessionWaitCaseList implements Serializable {
   private List kfSessionWaitCaseList;
 
   public static WxMpKfSessionWaitCaseList fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json,
+    return WxMpGsonBuilder.create().fromJson(json,
       WxMpKfSessionWaitCaseList.class);
   }
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialCountResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialCountResult.java
index ba457e79..721b31fc 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialCountResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialCountResult.java
@@ -2,10 +2,8 @@ package me.chanjar.weixin.mp.bean.material;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * @author codepiano
@@ -21,7 +19,7 @@ public class WxMpMaterialCountResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialFileBatchGetResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialFileBatchGetResult.java
index 3d6e9353..ebad06bf 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialFileBatchGetResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialFileBatchGetResult.java
@@ -4,10 +4,8 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * @author codepiano
@@ -22,7 +20,7 @@ public class WxMpMaterialFileBatchGetResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   @Data
@@ -34,7 +32,7 @@ public class WxMpMaterialFileBatchGetResult implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNews.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNews.java
index 41a71a11..e2f27d9e 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNews.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNews.java
@@ -5,9 +5,6 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -34,7 +31,7 @@ public class WxMpMaterialNews implements Serializable {
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public boolean isEmpty() {
@@ -117,7 +114,7 @@ public class WxMpMaterialNews implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNewsBatchGetResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNewsBatchGetResult.java
index 47e6cb53..894709ac 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNewsBatchGetResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialNewsBatchGetResult.java
@@ -4,10 +4,8 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 @Data
 public class WxMpMaterialNewsBatchGetResult implements Serializable {
@@ -19,7 +17,7 @@ public class WxMpMaterialNewsBatchGetResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   @Data
@@ -30,7 +28,7 @@ public class WxMpMaterialNewsBatchGetResult implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialUploadResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialUploadResult.java
index 15744ce5..0d133a76 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialUploadResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/material/WxMpMaterialUploadResult.java
@@ -2,9 +2,6 @@ package me.chanjar.weixin.mp.bean.material;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -22,7 +19,7 @@ public class WxMpMaterialUploadResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardCreateMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardCreateMessage.java
index bd8fccb4..d8842c73 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardCreateMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardCreateMessage.java
@@ -1,13 +1,11 @@
 package me.chanjar.weixin.mp.bean.membercard;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.bean.card.MemberCardCreateRequest;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
 
 @Data
 public final class WxMpMemberCardCreateMessage implements Serializable {
@@ -15,11 +13,12 @@ public final class WxMpMemberCardCreateMessage implements Serializable {
   @SerializedName("card")
   private MemberCardCreateRequest cardCreateRequest;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public static WxMpMemberCardCreateMessage fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpMemberCardCreateMessage.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpMemberCardCreateMessage.class);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUpdateResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUpdateResult.java
index 96b8212d..7b9dfb49 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUpdateResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUpdateResult.java
@@ -2,9 +2,6 @@ package me.chanjar.weixin.mp.bean.membercard;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -34,10 +31,10 @@ public class WxMpMemberCardUpdateResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public static WxMpMemberCardUpdateResult fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpMemberCardUpdateResult.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpMemberCardUpdateResult.class);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUserInfoResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUserInfoResult.java
index 705dba78..fca7da92 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUserInfoResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUserInfoResult.java
@@ -2,9 +2,6 @@ package me.chanjar.weixin.mp.bean.membercard;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -47,11 +44,11 @@ public class WxMpMemberCardUserInfoResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public static WxMpMemberCardUserInfoResult fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpMemberCardUserInfoResult.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpMemberCardUserInfoResult.class);
   }
 }
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpGetSelfMenuInfoResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpGetSelfMenuInfoResult.java
index 2c370eaf..8fb937ce 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpGetSelfMenuInfoResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpGetSelfMenuInfoResult.java
@@ -2,12 +2,10 @@ package me.chanjar.weixin.mp.bean.menu;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 
@@ -32,7 +30,7 @@ public class WxMpGetSelfMenuInfoResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpMenu.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpMenu.java
index e36a2b23..f94c59e2 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpMenu.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpMenu.java
@@ -3,14 +3,12 @@ package me.chanjar.weixin.mp.bean.menu;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.common.bean.menu.WxMenuButton;
 import me.chanjar.weixin.common.bean.menu.WxMenuRule;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 
@@ -36,7 +34,7 @@ public class WxMpMenu implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return this.toJson();
   }
 
   public String toJson() {
@@ -56,7 +54,7 @@ public class WxMpMenu implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
   }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpSelfMenuInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpSelfMenuInfo.java
index b9d8e941..4789b470 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpSelfMenuInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/menu/WxMpSelfMenuInfo.java
@@ -4,11 +4,9 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 
@@ -29,7 +27,7 @@ public class WxMpSelfMenuInfo implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   @Data
@@ -89,7 +87,7 @@ public class WxMpSelfMenuInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
     @Data
@@ -101,7 +99,7 @@ public class WxMpSelfMenuInfo implements Serializable {
 
       @Override
       public String toString() {
-        return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+        return WxMpGsonBuilder.create().toJson(this);
       }
     }
 
@@ -114,7 +112,7 @@ public class WxMpSelfMenuInfo implements Serializable {
 
       @Override
       public String toString() {
-        return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+        return WxMpGsonBuilder.create().toJson(this);
       }
 
       @Data
@@ -160,7 +158,7 @@ public class WxMpSelfMenuInfo implements Serializable {
 
         @Override
         public String toString() {
-          return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+          return WxMpGsonBuilder.create().toJson(this);
         }
 
       }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/HardWare.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/HardWare.java
index f29321d4..a75c98e0 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/HardWare.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/HardWare.java
@@ -2,13 +2,11 @@ package me.chanjar.weixin.mp.bean.message;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 
@@ -19,7 +17,7 @@ import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
  */
 @XStreamAlias("HardWare")
 @Data
-public class HardWare implements Serializable{
+public class HardWare implements Serializable {
   private static final long serialVersionUID = -1295785297354896461L;
 
   /**
@@ -37,6 +35,6 @@ public class HardWare implements Serializable{
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/ScanCodeInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/ScanCodeInfo.java
index 2af977ca..f53b44c4 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/ScanCodeInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/ScanCodeInfo.java
@@ -2,13 +2,11 @@ package me.chanjar.weixin.mp.bean.message;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 
@@ -38,7 +36,7 @@ public class ScanCodeInfo implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/SendLocationInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/SendLocationInfo.java
index 5d725557..09f1776b 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/SendLocationInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/SendLocationInfo.java
@@ -2,13 +2,11 @@ package me.chanjar.weixin.mp.bean.message;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 
@@ -44,6 +42,6 @@ public class SendLocationInfo implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/SendPicsInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/SendPicsInfo.java
index 318e7cee..a01e6659 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/SendPicsInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/SendPicsInfo.java
@@ -4,13 +4,11 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 
@@ -32,7 +30,7 @@ public class SendPicsInfo implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   @XStreamAlias("item")
@@ -46,7 +44,7 @@ public class SendPicsInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
   }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java
index 16a761ec..4e5fe8ac 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java
@@ -5,8 +5,6 @@ import java.io.InputStream;
 import java.io.Serializable;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
@@ -16,6 +14,7 @@ import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
 import me.chanjar.weixin.mp.api.WxMpConfigStorage;
 import me.chanjar.weixin.mp.util.crypto.WxMpCryptUtil;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 import me.chanjar.weixin.mp.util.xml.XStreamTransformer;
 
 /**
@@ -629,7 +628,7 @@ public class WxMpXmlMessage implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpCardResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpCardResult.java
index 7cbf9b7f..c6acc080 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpCardResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpCardResult.java
@@ -2,11 +2,9 @@ package me.chanjar.weixin.mp.bean.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.bean.WxMpCard;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
  * 卡券查询Code,核销Code接口返回结果
@@ -32,7 +30,7 @@ public class WxMpCardResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpCurrentAutoReplyInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpCurrentAutoReplyInfo.java
index d68fcacf..d702eeaf 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpCurrentAutoReplyInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpCurrentAutoReplyInfo.java
@@ -4,9 +4,6 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.JsonAdapter;
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
@@ -28,7 +25,7 @@ public class WxMpCurrentAutoReplyInfo implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public static WxMpCurrentAutoReplyInfo fromJson(String json) {
@@ -58,7 +55,7 @@ public class WxMpCurrentAutoReplyInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
     @SerializedName("rule_name")
@@ -85,7 +82,7 @@ public class WxMpCurrentAutoReplyInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
     private String type;
@@ -102,7 +99,7 @@ public class WxMpCurrentAutoReplyInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
     private List list;
@@ -115,7 +112,7 @@ public class WxMpCurrentAutoReplyInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
     @SerializedName("cover_url")
@@ -139,7 +136,7 @@ public class WxMpCurrentAutoReplyInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
     private String type;
@@ -155,7 +152,7 @@ public class WxMpCurrentAutoReplyInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
     private List list;
@@ -167,7 +164,7 @@ public class WxMpCurrentAutoReplyInfo implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
     private String type;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpMassSendResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpMassSendResult.java
index 392cc046..d18b7134 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpMassSendResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpMassSendResult.java
@@ -2,9 +2,6 @@ package me.chanjar.weixin.mp.bean.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -34,7 +31,7 @@ public class WxMpMassSendResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpMassUploadResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpMassUploadResult.java
index 98410891..03613dcb 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpMassUploadResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpMassUploadResult.java
@@ -2,9 +2,6 @@ package me.chanjar.weixin.mp.bean.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -30,7 +27,7 @@ public class WxMpMassUploadResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpOAuth2AccessToken.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpOAuth2AccessToken.java
index 33fa172d..24b87d7a 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpOAuth2AccessToken.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpOAuth2AccessToken.java
@@ -2,9 +2,6 @@ package me.chanjar.weixin.mp.bean.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -37,6 +34,6 @@ public class WxMpOAuth2AccessToken implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpQrCodeTicket.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpQrCodeTicket.java
index ee78096b..cd2d1994 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpQrCodeTicket.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpQrCodeTicket.java
@@ -22,11 +22,11 @@ public class WxMpQrCodeTicket implements Serializable {
   protected String url;
 
   public static WxMpQrCodeTicket fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpQrCodeTicket.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpQrCodeTicket.class);
   }
 
   @Override
   public String toString() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUser.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUser.java
index 818c4c5f..4d22fab9 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUser.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUser.java
@@ -4,9 +4,6 @@ import java.io.Serializable;
 import java.lang.reflect.Type;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.Gson;
 import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
@@ -76,20 +73,20 @@ public class WxMpUser implements Serializable {
 
 
   public static WxMpUser fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpUser.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpUser.class);
   }
 
   public static List fromJsonList(String json) {
     Type collectionType = new TypeToken>() {
     }.getType();
-    Gson gson = WxMpGsonBuilder.INSTANCE.create();
+    Gson gson = WxMpGsonBuilder.create();
     JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
     return gson.fromJson(jsonObject.get("user_info_list"), collectionType);
   }
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUserBlacklistGetResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUserBlacklistGetResult.java
index 83e1e244..40e2a716 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUserBlacklistGetResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUserBlacklistGetResult.java
@@ -20,11 +20,11 @@ public class WxMpUserBlacklistGetResult implements Serializable {
   protected String nextOpenid;
 
   public static WxMpUserBlacklistGetResult fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpUserBlacklistGetResult.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpUserBlacklistGetResult.class);
   }
 
   @Override
   public String toString() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUserList.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUserList.java
index 5f816456..e6c8d654 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUserList.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMpUserList.java
@@ -22,11 +22,11 @@ public class WxMpUserList implements Serializable {
   protected String nextOpenid;
 
   public static WxMpUserList fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpUserList.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpUserList.class);
   }
 
   @Override
   public String toString() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/shake/WxMpShakeAroundPageAddResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/shake/WxMpShakeAroundPageAddResult.java
index 632fe4f3..f80cfe52 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/shake/WxMpShakeAroundPageAddResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/shake/WxMpShakeAroundPageAddResult.java
@@ -13,7 +13,7 @@ public class WxMpShakeAroundPageAddResult implements Serializable {
   private String errorMsg;
   private Integer pageId;
   public static WxMpShakeAroundPageAddResult fromJson(String json) {
-    JsonObject jsonObject = WxMpGsonBuilder.INSTANCE.create().fromJson(json, JsonObject.class);
+    JsonObject jsonObject = WxMpGsonBuilder.create().fromJson(json, JsonObject.class);
     WxMpShakeAroundPageAddResult result = new WxMpShakeAroundPageAddResult();
     result.setErrorCode(GsonHelper.getInteger(jsonObject, "errcode"));
     result.setErrorMsg(GsonHelper.getString(jsonObject, "errmsg"));
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/shake/WxMpShakeAroundRelationSearchResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/shake/WxMpShakeAroundRelationSearchResult.java
index 2b7269e5..71dbd8d8 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/shake/WxMpShakeAroundRelationSearchResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/shake/WxMpShakeAroundRelationSearchResult.java
@@ -12,7 +12,7 @@ public class WxMpShakeAroundRelationSearchResult implements Serializable {
   private String errmsg;
   private WxMpShakeAcoundRelationSearch data;
   public static WxMpShakeAroundRelationSearchResult fromJson(String json) {
-    return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxMpShakeAroundRelationSearchResult.class);
+    return WxMpGsonBuilder.create().fromJson(json, WxMpShakeAroundRelationSearchResult.class);
   }
   @Data
   public static class WxMpShakeAcoundRelationSearch implements Serializable{
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreBaseInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreBaseInfo.java
index 03f814af..d2249765 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreBaseInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreBaseInfo.java
@@ -4,9 +4,6 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.annotations.SerializedName;
@@ -179,7 +176,7 @@ public class WxMpStoreBaseInfo implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return this.toJson();
   }
 
   public String toJson() {
@@ -195,7 +192,7 @@ public class WxMpStoreBaseInfo implements Serializable {
   public static class WxMpStorePhoto implements Serializable {
     private static final long serialVersionUID = -2942447907614186861L;
     /**
-     * 照片url
+     * 照片url.
      */
     @SerializedName("photo_url")
     private String photoUrl;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreInfo.java
index 3002e190..58a9efd2 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreInfo.java
@@ -2,17 +2,17 @@ package me.chanjar.weixin.mp.bean.store;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
+ * .
+ *
  * @author BinaryWang
  */
 @Data
-public class WxMpStoreInfo implements Serializable{
+public class WxMpStoreInfo implements Serializable {
   private static final long serialVersionUID = 7300598931768355461L;
 
   @SerializedName("base_info")
@@ -20,6 +20,6 @@ public class WxMpStoreInfo implements Serializable{
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreListResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreListResult.java
index 079b5c1c..6841297c 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreListResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/store/WxMpStoreListResult.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.store;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -49,7 +46,7 @@ public class WxMpStoreListResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/subscribe/WxMpSubscribeMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/subscribe/WxMpSubscribeMessage.java
index b6f1eef5..51c312d3 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/subscribe/WxMpSubscribeMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/subscribe/WxMpSubscribeMessage.java
@@ -66,7 +66,7 @@ public class WxMpSubscribeMessage {
 
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   @Data
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java
index d6606cf1..8ee62813 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.tag;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -48,7 +45,7 @@ public class WxTagListUser implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return this.toJson();
   }
 
   @Data
@@ -63,7 +60,7 @@ public class WxTagListUser implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxUserTag.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxUserTag.java
index 77251df2..83782f66 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxUserTag.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxUserTag.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.tag;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
 import lombok.Data;
@@ -57,6 +54,6 @@ public class WxUserTag implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return this.toJson();
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplate.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplate.java
index 5ccd89fd..2b3d45a7 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplate.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplate.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.template;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.google.gson.JsonParser;
 import com.google.gson.annotations.SerializedName;
 import com.google.gson.reflect.TypeToken;
@@ -70,7 +67,7 @@ public class WxMpTemplate implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateIndustry.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateIndustry.java
index 40bfd18a..4507cacb 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateIndustry.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateIndustry.java
@@ -3,9 +3,6 @@ package me.chanjar.weixin.mp.bean.template;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
@@ -33,7 +30,7 @@ public class WxMpTemplateIndustry implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   public String toJson() {
@@ -65,7 +62,7 @@ public class WxMpTemplateIndustry implements Serializable {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxMpGsonBuilder.create().toJson(this);
     }
 
   }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java
index cb70893a..39233743 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java
@@ -66,7 +66,7 @@ public class WxMpTemplateMessage implements Serializable {
   }
 
   public String toJson() {
-    return WxMpGsonBuilder.INSTANCE.create().toJson(this);
+    return WxMpGsonBuilder.create().toJson(this);
   }
 
   @Data
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpCardResultGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpCardResultGsonAdapter.java
index 9d786649..7e476acb 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpCardResultGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpCardResultGsonAdapter.java
@@ -26,7 +26,7 @@ public class WxMpCardResultGsonAdapter implements JsonDeserializer() {
       }.getType());
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java
index 524e1531..e34128ea 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java
@@ -16,7 +16,7 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 
 public class WxMpGsonBuilder {
 
-  public static final GsonBuilder INSTANCE = new GsonBuilder();
+  private static final GsonBuilder INSTANCE = new GsonBuilder();
 
   static {
     INSTANCE.disableHtmlEscaping();
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
index a340be81..ce04293c 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
@@ -7,9 +7,6 @@ import java.util.Map;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import cn.binarywang.wx.miniapp.config.WxMaConfig;
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
@@ -17,6 +14,7 @@ import me.chanjar.weixin.mp.api.WxMpConfigStorage;
 import me.chanjar.weixin.open.api.WxOpenConfigStorage;
 import me.chanjar.weixin.open.bean.WxOpenAuthorizerAccessToken;
 import me.chanjar.weixin.open.bean.WxOpenComponentAccessToken;
+import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
 
 /**
  * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化
@@ -450,7 +448,7 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
 
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxOpenGsonBuilder.create().toJson(this);
     }
 
     @Override
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/ma/WxOpenMaCategory.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/ma/WxOpenMaCategory.java
index 88ca63ae..9c5fc4cc 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/ma/WxOpenMaCategory.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/ma/WxOpenMaCategory.java
@@ -1,20 +1,20 @@
 package me.chanjar.weixin.open.bean.ma;
 
+import java.io.Serializable;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
 
 /**
- * 微信小程序分类目录
+ * 微信小程序分类目录.
  *
  * @author yqx
  * @date 2018/9/13
  */
 @Data
 public class WxOpenMaCategory implements Serializable {
+  private static final long serialVersionUID = -700005096619889630L;
 
   @SerializedName("first_class")
   private String firstClass;
@@ -34,7 +34,8 @@ public class WxOpenMaCategory implements Serializable {
   @SerializedName("third_id")
   private Integer thirdId;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxOpenGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaCategoryListResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaCategoryListResult.java
index 087e0dd4..b5919e02 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaCategoryListResult.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaCategoryListResult.java
@@ -1,12 +1,12 @@
 package me.chanjar.weixin.open.bean.result;
 
+import java.util.List;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.open.bean.ma.WxOpenMaCategory;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.util.List;
+import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
 
 /**
  * 微信开放平台小程序分类目录列表返回
@@ -15,13 +15,16 @@ import java.util.List;
  * @date 2018/9/12
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxOpenMaCategoryListResult extends WxOpenResult {
+  private static final long serialVersionUID = 4549360618179745721L;
 
   @SerializedName("category_list")
   List categoryList;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxOpenGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaDomainResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaDomainResult.java
index 4a9f11ad..2d782ee5 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaDomainResult.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaDomainResult.java
@@ -1,18 +1,21 @@
 package me.chanjar.weixin.open.bean.result;
 
+import java.util.List;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-
-import java.util.List;
+import lombok.EqualsAndHashCode;
 
 /**
- * 微信开放平台小程序域名设置返回对象
+ * 微信开放平台小程序域名设置返回对象.
  *
  * @author yqx
  * @date 2018/9/12
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxOpenMaDomainResult extends WxOpenResult {
+  private static final long serialVersionUID = 3406315629639573330L;
 
   @SerializedName("requestdomain")
   List requestdomainList;
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaPageListResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaPageListResult.java
index 35441b52..1e854138 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaPageListResult.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaPageListResult.java
@@ -1,26 +1,29 @@
 package me.chanjar.weixin.open.bean.result;
 
+import java.util.List;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.util.List;
+import lombok.EqualsAndHashCode;
+import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
 
 /**
- * 微信开放平台小程序第三方提交代码的页面配置列表
+ * 微信开放平台小程序第三方提交代码的页面配置列表.
  *
  * @author yqx
  * @date 2018/9/12
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxOpenMaPageListResult extends WxOpenResult {
+  private static final long serialVersionUID = 6982848180319905444L;
 
   @SerializedName("page_list")
   List pageList;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxOpenGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaQueryAuditResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaQueryAuditResult.java
index e86d72e8..41a761d6 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaQueryAuditResult.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaQueryAuditResult.java
@@ -2,26 +2,31 @@ package me.chanjar.weixin.open.bean.result;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
+ * .
  * @author yqx
  * @date 2018/10/3
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxOpenMaQueryAuditResult extends WxOpenResult {
+  private static final long serialVersionUID = 8022192589710319473L;
+
   /**
-   * 审核编号
+   * 审核编号.
    */
   @SerializedName("auditid")
   Long auditId;
 
   /**
-   * 审核状态:2-审核中,0-审核通过,1-审核失败
+   * 审核状态:2-审核中,0-审核通过,1-审核失败.
    */
   Integer status;
 
   /**
-   * 审核失败原因
+   * 审核失败原因.
    */
   String reason;
 }
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaSubmitAuditResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaSubmitAuditResult.java
index abf27417..69774e8e 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaSubmitAuditResult.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaSubmitAuditResult.java
@@ -2,18 +2,21 @@ package me.chanjar.weixin.open.bean.result;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 微信开放平台小程序发布代码审核结果
+ * 微信开放平台小程序发布代码审核结果.
  *
  * @author yqx
  * @date 2018/9/12
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxOpenMaSubmitAuditResult extends WxOpenResult {
+  private static final long serialVersionUID = 7431725910039734365L;
 
   /**
-   * 审核编号
+   * 审核编号.
    */
   @SerializedName("auditid")
   Long auditId;
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaTesterListResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaTesterListResult.java
index aa2fedc5..014381ea 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaTesterListResult.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaTesterListResult.java
@@ -1,27 +1,30 @@
 package me.chanjar.weixin.open.bean.result;
 
+import java.util.List;
+
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.open.bean.ma.WxOpenMaMember;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.util.List;
+import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
 
 /**
- * 微信开放平台小程序体验者列表返回
+ * 微信开放平台小程序体验者列表返回.
  *
  * @author yqx
  * @date 2018/9/12
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxOpenMaTesterListResult extends WxOpenResult {
+  private static final long serialVersionUID = -613936397557067111L;
 
   @SerializedName("members")
   List membersList;
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxOpenGsonBuilder.create().toJson(this);
   }
 
 }
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenResult.java
index d12a68f7..6b1d10ba 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenResult.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenResult.java
@@ -1,33 +1,33 @@
 package me.chanjar.weixin.open.bean.result;
 
-import lombok.Data;
+import java.io.Serializable;
+
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
-import java.io.Serializable;
+import lombok.Data;
+import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
 
 /**
- * 基础的微信开放平台请求结果
+ * 基础的微信开放平台请求结果.
  *
  * @author yqx
  * @date 2018/10/1
  */
 @Data
 public class WxOpenResult implements Serializable {
+  private static final long serialVersionUID = 2101652152604850904L;
   protected String errcode;
   protected String errmsg;
 
   /**
-   * 请求是否成功
-   *
-   * @return
+   * 请求是否成功.
    */
   public boolean isSuccess() {
     return StringUtils.equalsIgnoreCase(errcode, "0");
   }
 
+  @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxOpenGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerInfoResultGsonAdapter.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerInfoResultGsonAdapter.java
index 1cef0ff4..112ec9f4 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerInfoResultGsonAdapter.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerInfoResultGsonAdapter.java
@@ -1,13 +1,17 @@
 package me.chanjar.weixin.open.util.json;
 
-import com.google.gson.*;
+import java.lang.reflect.Type;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
 import com.google.gson.reflect.TypeToken;
 import me.chanjar.weixin.open.bean.auth.WxOpenAuthorizationInfo;
 import me.chanjar.weixin.open.bean.auth.WxOpenAuthorizerInfo;
 import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult;
 
-import java.lang.reflect.Type;
-
 /**
  * @author 007
  */
@@ -17,12 +21,12 @@ public class WxOpenAuthorizerInfoResultGsonAdapter implements JsonDeserializer() {
       }.getType());
 
     authorizerInfoResult.setAuthorizationInfo(authorizationInfo);
-    WxOpenAuthorizerInfo authorizerInfo = WxOpenGsonBuilder.INSTANCE.create().fromJson(jsonObject.get("authorizer_info"),
+    WxOpenAuthorizerInfo authorizerInfo = WxOpenGsonBuilder.create().fromJson(jsonObject.get("authorizer_info"),
       new TypeToken() {
       }.getType());
 
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenGsonBuilder.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenGsonBuilder.java
index 2b390ade..703aff12 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenGsonBuilder.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenGsonBuilder.java
@@ -15,7 +15,7 @@ import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult;
  */
 public class WxOpenGsonBuilder {
 
-  public static final GsonBuilder INSTANCE = new GsonBuilder();
+  private static final GsonBuilder INSTANCE = new GsonBuilder();
 
   static {
     INSTANCE.disableHtmlEscaping();
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenQueryAuthResultGsonAdapter.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenQueryAuthResultGsonAdapter.java
index 8868d0fe..78791603 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenQueryAuthResultGsonAdapter.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenQueryAuthResultGsonAdapter.java
@@ -1,12 +1,16 @@
 package me.chanjar.weixin.open.util.json;
 
-import com.google.gson.*;
+import java.lang.reflect.Type;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
 import com.google.gson.reflect.TypeToken;
 import me.chanjar.weixin.open.bean.auth.WxOpenAuthorizationInfo;
 import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult;
 
-import java.lang.reflect.Type;
-
 /**
  * @author 007
  */
@@ -16,7 +20,7 @@ public class WxOpenQueryAuthResultGsonAdapter implements JsonDeserializer() {
       }.getType());
 
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryRequest.java
index 987677a3..21de8fca 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryRequest.java
@@ -1,8 +1,5 @@
 package com.github.binarywang.wxpay.bean.entpay;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import lombok.AllArgsConstructor;
@@ -11,6 +8,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import me.chanjar.weixin.common.annotation.Required;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 /**
  * 
@@ -50,7 +48,7 @@ public class EntPayQueryRequest extends BaseWxPayRequest {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 
   @Override
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRequest.java
index 285b66ba..fd04fb83 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRequest.java
@@ -1,8 +1,5 @@
 package com.github.binarywang.wxpay.bean.entpay;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import lombok.AllArgsConstructor;
@@ -11,6 +8,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import me.chanjar.weixin.common.annotation.Required;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 /**
  * 
@@ -193,7 +191,7 @@ public class EntPayRequest extends BaseWxPayRequest {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 
   @Override
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyCoupon.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyCoupon.java
index cb1d6c24..c8ea11d7 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyCoupon.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyCoupon.java
@@ -4,11 +4,9 @@ import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 /**
  * 支付异步通知代金券详细.
@@ -40,6 +38,6 @@ public class WxPayOrderNotifyCoupon implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyResult.java
index f96871fa..433342f9 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyResult.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyResult.java
@@ -3,9 +3,6 @@ package com.github.binarywang.wxpay.bean.notify;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
 import com.github.binarywang.wxpay.converter.WxPayOrderNotifyResultConverter;
@@ -17,6 +14,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
 
 /**
@@ -327,6 +325,6 @@ public class WxPayOrderNotifyResult extends BaseWxPayResult {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 }
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayRefundNotifyResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayRefundNotifyResult.java
index cf774a41..513dbfa8 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayRefundNotifyResult.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayRefundNotifyResult.java
@@ -7,8 +7,6 @@ import javax.crypto.spec.SecretKeySpec;
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
@@ -19,6 +17,7 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
 
 /**
@@ -90,7 +89,7 @@ public class WxPayRefundNotifyResult extends BaseWxPayResult implements Serializ
   public static class ReqInfo {
     @Override
     public String toString() {
-      return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+      return WxGsonBuilder.create().toJson(this);
     }
 
     /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java
index 3824e159..b39e76fd 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java
@@ -4,8 +4,6 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import com.github.binarywang.wxpay.config.WxPayConfig;
 import com.github.binarywang.wxpay.exception.WxPayException;
@@ -15,6 +13,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
 import lombok.Data;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.BeanUtils;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
 
 import static com.github.binarywang.wxpay.constant.WxPayConstants.SignType.ALL_SIGN_TYPES;
@@ -178,7 +177,7 @@ public abstract class BaseWxPayRequest implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 
   /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResult.java
index f3af4415..dda0c121 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResult.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResult.java
@@ -14,8 +14,6 @@ import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -29,9 +27,11 @@ import com.github.binarywang.wxpay.util.SignUtils;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.gson.GsonBuilder;
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import lombok.Data;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
 
 /**
@@ -151,7 +151,7 @@ public abstract class BaseWxPayResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 
   /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillBaseResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillBaseResult.java
index a9b3e46c..a747b98d 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillBaseResult.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillBaseResult.java
@@ -2,11 +2,9 @@ package com.github.binarywang.wxpay.bean.result;
 
 import java.io.Serializable;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 /**
  * 交易时间:2017-04-06 01:00:02 公众账号ID: 商户号: 子商户号:0 设备号:WEB 微信订单号: 商户订单号:2017040519091071873216 用户标识: 交易类型:NATIVE
@@ -22,7 +20,7 @@ public class WxPayBillBaseResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 
   /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillResult.java
index a8f9f7c5..cf2616b5 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillResult.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillResult.java
@@ -3,11 +3,9 @@ package com.github.binarywang.wxpay.bean.result;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 /**
  * The type Wx pay bill result.
@@ -21,7 +19,7 @@ public class WxPayBillResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 
   /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowBaseResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowBaseResult.java
index dc631314..75ee1509 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowBaseResult.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowBaseResult.java
@@ -1,11 +1,10 @@
 package com.github.binarywang.wxpay.bean.result;
 
+import java.io.Serializable;
+
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.io.Serializable;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 /**
  * 记账时间:2018-02-01 04:21:23 微信支付业务单号:50000305742018020103387128253 资金流水单号:1900009231201802015884652186 业务名称:退款
@@ -20,19 +19,19 @@ public class WxPayFundFlowBaseResult implements Serializable {
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 
   /**
-   * 记账时间
+   * 记账时间.
    */
   private String BillingTime;
   /**
-   * 微信支付业务单号
+   * 微信支付业务单号.
    */
   private String bizTransactionId;
   /**
-   * 资金流水单号
+   * 资金流水单号.
    */
   private String fundFlowId;
   /**
@@ -40,31 +39,31 @@ public class WxPayFundFlowBaseResult implements Serializable {
    */
   private String bizName;
   /**
-   * 业务类型
+   * 业务类型.
    */
   private String bizType;
   /**
-   * 收支类型
+   * 收支类型.
    */
   private String financialType;
   /**
-   * 收支金额(元)
+   * 收支金额(元).
    */
   private String financialFee;
   /**
-   * 账户结余(元)
+   * 账户结余(元).
    */
   private String AccountBalance;
   /**
-   * 资金变更提交申请人
+   * 资金变更提交申请人.
    */
   private String fundApplicant;
   /**
-   * 备注
+   * 备注.
    */
   private String memo;
   /**
-   * 业务凭证号
+   * 业务凭证号.
    */
   private String bizVoucherId;
 
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowResult.java
index ba325504..7b789ca0 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowResult.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowResult.java
@@ -3,11 +3,9 @@ package com.github.binarywang.wxpay.bean.result;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 /**
  * 
@@ -19,16 +17,16 @@ import lombok.NoArgsConstructor;
  */
 @Data
 @NoArgsConstructor
-public class WxPayFundFlowResult implements Serializable{
+public class WxPayFundFlowResult implements Serializable {
   private static final long serialVersionUID = 8371500036495349207L;
 
   @Override
   public String toString() {
-    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
+    return WxGsonBuilder.create().toJson(this);
   }
 
   /**
-   * 资金流水返回对象
+   * 资金流水返回对象.
    */
   private List wxPayFundFlowBaseResultList;