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"
相关推荐
心平气和量大福大3 分钟前
android-实例-蒲公英-更新与安装-5-签名与生成APK
android·java·开发语言
9523642 分钟前
Spring-cloud配置中心
java·spring·spring cloud·微服务
ydd1001001 小时前
寻找两个正序数组的中位数 Java 题解,二分分割详解
java·开发语言
真上帝的左手2 小时前
10. 软件设计&架构-Spring Security 7 整合CAS SSO 单点登录
java·spring·架构·sso
Zane19942 小时前
单例线程安全、生产者消费者、死锁:并发面试三连问串讲
java·后端
云烟成雨TD3 小时前
Micrometer 系列【42】链路追踪:Span 体系 | 核心 API
java·链路追踪·micrometer
Gorway3 小时前
理解 Spring 依赖注入:从构造器注入到集合与条件 Bean
java·后端
LiLiYuan.4 小时前
【字符串常量池】
java·开发语言·面试
Sylvia33.4 小时前
从轮询到推送:足球数据API架构演进与火星数据技术拆解
java·服务器·网络·python·websocket·架构
cfm_29144 小时前
高并发系统缓存全解
java·缓存