约定好的“=”去哪里了?

你以为的"="真的还在吗?

  • 问题背景:

前端输入"="分隔符,以Json的格式存入数据库,然后升级应用将,数据库存入的配置信息重写配置文件,神奇的发现服务器上需要指定的分隔符变成了"\u003d"

  • 问题复现
java 复制代码
   System.out.print(new Gson().toJson(<http://www.baidu.com/id=1>));

结果出乎意料的是:www.baidu.com/id/u003d1

特殊字符(如等号=)被转换为Unicode转义序列(如\u003d),如上所示"="成了 "u003d"

  • 问题原因

因为Gson默认会对这些特殊字符进行HTML转义,以确保生成的JSON字符串符合JSON规范。如果你不希望这些字符被转义

  • 解决方案

    1. 禁用HTML转义
    java 复制代码
      Gson gson = new GsonBuilder().disableHtmlEscaping().create();

    2.手动替换

    java 复制代码
        json = json.replace("\\u003d", "=");
    1. 工具类转换
    java 复制代码
       String json = StringUtils.unescapeJava(json);
  • 总结
    程序员人生,不仅在于思考,更在于动手实践。 你仅仅去看这个Bug,估计一辈子都看不出原因。

相关推荐
胡桃姓胡,蝴蝶也姓胡3 小时前
Rag优化 - 如何提升首字响应速度
后端·大模型·rag
紫荆鱼7 小时前
设计模式-命令模式(Command)
c++·后端·设计模式·命令模式
编码追梦人7 小时前
深耕 Rust:核心技术解析、生态实践与高性能开发指南
开发语言·后端·rust
朝新_8 小时前
【SpringBoot】详解Maven的操作与配置
java·spring boot·笔记·后端·spring·maven·javaee
绝无仅有8 小时前
某教育大厂面试题解析:MySQL索引、Redis缓存、Dubbo负载均衡等
vue.js·后端·面试
sean8 小时前
开发一个自己的 claude code
前端·后端·ai编程
追逐时光者9 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 59 期(2025年10.20-10.26)
后端·.net
盖世英雄酱5813610 小时前
java深度调试【第三章内存分析和堆内存设置】
java·后端
007php00710 小时前
京东面试题解析:同步方法、线程池、Spring、Dubbo、消息队列、Redis等
开发语言·后端·百度·面试·职场和发展·架构·1024程序员节
程序定小飞10 小时前
基于springboot的电影评论网站系统设计与实现
java·spring boot·后端