Google Gson库转换Java对象为JSON时特殊字符转义问题咨询
解决Gson转JSON时特殊字符被Unicode转义的问题
这问题我之前也碰到过!Gson默认会对HTML相关的特殊字符做Unicode转义,所以你的URL里的=被转成\u003d、&里的&被转成\u0026了,其实只要调整Gson的配置就能轻松解决。
核心解决方案:禁用HTML转义
Gson提供了专门的配置项来关闭这种HTML转义行为,你只需要用GsonBuilder创建Gson实例时调用disableHtmlEscaping()方法即可:
Gson g = new GsonBuilder().disableHtmlEscaping().create();
这个方法会告诉Gson不要转义HTML相关的特殊字符(包括&、=、<、>等),让你的URL字符串保持原样输出。
修改后的完整代码示例
public static void main(String[] args) { MyObj myObj = new MyObj(); myObj.setUrl("www.koko.com?k=1&v=2"); // 使用GsonBuilder禁用HTML转义 Gson g = new GsonBuilder().disableHtmlEscaping().create(); System.out.println(g.toJson(myObj)); } public static class MyObj{ private String url; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }
运行这段代码后,输出的JSON会是:
{"url":"www.koko.com?k=1&v=2"}
完全保留了你原本的URL字符串,不会出现Unicode转义序列。
补充说明
Gson默认开启HTML转义是为了避免JSON中的特殊字符被当作HTML解析时出现安全问题或格式错误,但对于URL这类场景,我们不需要这种防护,所以禁用HTML转义是完全安全的。
内容的提问来源于stack exchange,提问作者Ehud Lev
相关产品推荐
相关产品推荐

