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"
相关推荐
Mr_Xuhhh2 小时前
第一部分:类和对象(中)— 取地址运算符重载
java·开发语言
Selegant2 小时前
告别传统部署:用 GraalVM Native Image 构建秒级启动的 Java 微服务
java·开发语言·微服务·云原生·架构
__万波__2 小时前
二十三种设计模式(十三)--模板方法模式
java·设计模式·模板方法模式
动亦定2 小时前
微服务中如何保证数据一致性?
java·数据库·微服务·架构
王桑.2 小时前
Spring中IoC的底层原理
java·后端·spring
Liii4032 小时前
Java集合详细讲解
java·开发语言
Han.miracle3 小时前
Spring Boot 项目从入门到排障:核心结构、依赖管理与启动全解析
java·jar
麦麦鸡腿堡3 小时前
Java_通过反射获取类的结构信息
java·开发语言