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"
相关推荐
weixin_5112552110 小时前
更新jar内资源和代码
java·jar
木井巳10 小时前
【递归算法】验证二叉搜索树
java·算法·leetcode·深度优先·剪枝
不当菜虚困10 小时前
windows下HSDB导出class文件报错【java.io.IOException : 系统找不到指定的路径。】
java·开发语言
小马爱打代码11 小时前
Spring Boot:第三方 API 调用的企业级容错设计
java·spring boot·后端
草履虫建模11 小时前
A13 String 详解:不可变、常量池、equals 与 ==、性能与常见坑
java·开发语言·spring·jdk·intellij-idea·java基础·新手
invicinble11 小时前
学习的门道和思路
java·开发语言·学习
weixin1997010801611 小时前
加盟网 item_search - 根据关键词获取行业列表接口对接全攻略:从入门到精通
java·python
EliseL11 小时前
SuperMap iObjects Java 如何将3DTiles数据转换为S3M三维瓦片
java·3d·三维
cyforkk11 小时前
11、Java 基础硬核复习:常用类和基础API的核心逻辑与面试考点
java·python·面试
全栈师11 小时前
java和C#的基本语法区别
java·开发语言·c#