Gson打印日志
起因
java
public static void main(String[] args) {
String str = "ajjui=";
System.out.println("result="+JsonUtil.objectToJson(str));
}

日志打印出现\u003d
搜了一下,发现\u003d是=
排查
1、先检查数据库,数据库是=;
2、后检查代码,代码没有对变量重新赋值的地方;
3、最后锁定可能是日志打印的问题
跟进
看了日志打印的方法,发现用的是gson.toJson方法,问了下GPT,才知道是Gson 自己做了一次转义。
知识点
默认情况下,gson.toJson(...) 会对 HTML 敏感字符做 Unicode 转义,其中就包括:
| 字符 | 转义后 |
|---|---|
< |
\u003c |
> |
\u003e |
& |
\u0026 |
= |
\u003d |
目的:让生成的 JSON 可以直接塞进 script标签 而不会出现语法问题。
使用
gson的这个作用是可选的
java
// 默认行为
Gson gson = new Gson();
System.out.println(gson.toJson("a=b")); // 输出 "a\u003db"
// 关闭 HTML 转义
Gson gson2 = new GsonBuilder()
.disableHtmlEscaping() // 关键
.create();
System.out.println(gson2.toJson("a=b")); // 输出 "a=b"