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

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

  • 问题背景:

前端输入"="分隔符,以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,估计一辈子都看不出原因。

相关推荐
hsg7743 分钟前
简述:Rust、GeoRust、自主研发GIS平台
开发语言·后端·rust
谭光志8 小时前
Vibe Coding 时代,程序员该何去何从
前端·后端·ai编程
GoGeekBaird9 小时前
我用 BeeWeave 跑完了一次完整写作闭环
后端·github
仿生狮子10 小时前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
Reart12 小时前
Leetcode 213.打家劫舍2(内含闲谈,打劫真是技术活,好题,716)
后端·算法
触底反弹13 小时前
🔥 RAG 到底是怎么工作的?掰开揉碎了给你讲明白!
javascript·人工智能·后端
techdashen13 小时前
Go 1.26 新增 `bytes.Buffer.Peek`:只看数据,不移动读取位置
开发语言·后端·golang
Reart13 小时前
Leetcode 198.打家劫舍(716)
后端·算法
Java编程爱好者14 小时前
Spring6.0+Boot3.0:秒级启动、万级并发的开发新姿势
后端
YYYing.14 小时前
【C++大型项目之高性能服务器框架 (七) 】Socket与ByteArray模块
服务器·c++·后端·框架·高性能·c/c++