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"
相关推荐
java1234_小锋6 小时前
Spring AI 2.0 开发Java Agent智能体 - 新建 HelloWorld 项目
java·人工智能·spring·spring ai
yue2004036 小时前
Spring IoC 与 DI 核心概念与原理笔记
java·笔记·spring
wuminyu6 小时前
专家视角看Java多态性的底层基石vtable(虚函数表)构建过程解析
java·linux·c语言·jvm·c++
phltxy6 小时前
Spring Cloud 服务注册与发现:Eureka 从原理到实战
java·spring cloud·eureka
测试那点事儿7 小时前
零基础API 接口自动化框架源代码:结构、功能与运行时序
java·servlet·自动化
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题】【Java基础篇】第23题:ConcurrentHashMap的底层原理是什么
java·开发语言·算法·哈希算法·散列表·hash
爱怪笑的小杰杰7 小时前
优化 UniApp 日历组件的多语言切换:告别 setLocale 引起的 App 重启
java·前端·uni-app
solicitous7 小时前
JAVA系统复习(基础语法-类、接口)
java·开发语言
likerhood7 小时前
单例模式详细讲解(java)
java·开发语言·单例模式
以琦琦为中心7 小时前
Spring `@Lazy` 注解技术文档
java