Gson解析toJson特殊字符被转义的问题(如= & ‘’ 等)

Map<String, Object> map = new HashMap<>();
map.put("page_path", "page_path");
String pageparam = Uri.encode("item_id=415&user_id=105", "-_.!~*'()=&");
map.put("page_param", pageparam);
Gson gson = new Gson();
Logger.e("---onCreate--- " + gson.toJson(map));

如上面gson转String,打印出来结果为 {“page_param”:”item_id\u003d415\u0026user_id\u003d105″,”page_path”:”page_path”}

把=和&负号替换成\u003d和\u0026,与预期结果不符,刚开始以为是Uri.encode 问题,打印 encode没有问题,再分析发现可能gson.tojson可能存在问题。解决办法,通过 GsonBuilder创建

Gson gs = new GsonBuilder().disableHtmlEscaping().create();

效果如下图

如果想要json不是一整行显示,而是根据json 属性自动换行,在 GsonBuilder 创建是可以添加setPrettyPrinting方法

Gson gs = new GsonBuilder().setPrettyPrinting()disableHtmlEscaping().create();