【Java 】\u003d乱码

情况

跟后台交互的时候,发现传过去的数据中有个 \u003d
这是我传的参数 :
query=[{property:"chengShi.id",operator:"=",value:1}]
这是后台接收到的参数:
query=[{"property":"chengShi.id","value":1,"operator":"\u003d"}]
很明显,是 = 出错了,因为要传的是对象,我把它封装在Map中了,再用Gson转换,这是我的代码:

Map query = new HashMap();
        query.put("property", "shangPinDM");
        query.put("operator", "=");
        query.put("value", id);
OkHttpGo.post(API.CHECK_PRODUCT)
                .params("query", "[" + MyJson.toJson(query) + "]")
                .execute(new DialogCallback(this).......

注意这段代码 MyJson.toJson(query),MyJson中封装的是Gson。所以问题就出在Gson转换过程中。

原因

Gson默认是进行HTML ESCAPE,也就是转码, 比如我们 \t 表示换行符。因此对象中有=时,Gson就会把=转码,而 = 转码就是 \u003d 。如下图,使用站长之家的在线转换工具可以看到 = 转成Unicode编码之后就是 \u003d
【Java 】\u003d乱码_第1张图片

解决

既然Gson默认会进行HTML ESCAPE(转码),我们设置不让Gson转码就可以了,具体代码如下:

  // 创建一个不进行HtmlEscaping的Gson对象
  Gson gson = new GsonBuilder().disableHtmlEscaping().create();
  String json = gson.toJson(query);

你可能感兴趣的:(JAVA)