Gson转义特殊字符

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"
相关推荐
xcl09256 小时前
商超智能运营实战:数据驱动提升门店效率与体验指南
java·mfc·宠物
Flynt8 小时前
OpenJDK禁AI代码半年了,现在执行得怎么样?答案是:全靠自觉
java·开源·ai编程
古法安卓13 小时前
Android-日志系统源码解析
android·java·android studio
小夏coding15 小时前
从"一把梭"到"精妙拆解" —— 滑动窗口计时框架的设计演进
java·后端
MacroZheng16 小时前
同事问我:"Claude Code经常失忆,不怕它把项目搞炸?",我:"怕,三个Markdown文件给它装个永不丢失的外置大脑!"
java·人工智能·后端
十年Java程序媛17 小时前
深度实战:JDK21 虚拟线程 + HikariCP 生产正确配比、坑点、监控全套
java·spring boot
xiaoqiMikko17 小时前
有人在搜一个不存在的 Tomcat 版本
java·tomcat
用户31268748772021 小时前
ConcurrentHashMap 怎么保证线程安全?从分段锁到 CAS+synchronized
java
vipxieliang21 小时前
ValidX vs Apache Commons Validator:功能与性能对比
java·spring boot
SimonKing21 小时前
升级Spring Boot 4后,从 Jackson 2 到 3,到底有哪些变化
java·后端·程序员