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

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

  • 问题背景:

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

相关推荐
锥锋骚年11 分钟前
golang 发送内网邮件和外网邮件
开发语言·后端·golang
雨雨雨雨雨别下啦23 分钟前
Spring AOP概念
java·后端·spring
on the way 12323 分钟前
day04-Spring之Bean的生命周期
java·后端·spring
代码笔耕25 分钟前
面向对象开发实践之消息中心设计(二)
java·后端·架构
云水木石34 分钟前
Rust 语言开发的 Linux 桌面来了
linux·运维·开发语言·后端·rust
法欧特斯卡雷特39 分钟前
Kotlin 2.3.0 现已发布!又有什么好东西?
后端·架构·开源
a努力。1 小时前
小红书Java面试被问:ThreadLocal 内存泄漏问题及解决方案
java·jvm·后端·算法·面试·架构
serendipity_hky1 小时前
【go语言 | 第4篇】goroutine模型和调度策略
后端·性能优化·golang
狂炫冰美式1 小时前
《预言市场进化论:从罗马斗兽场,到 Polymarket 的 K 线图》
前端·后端
hahjee1 小时前
Go编写的ANSI终端颜色和样式控制库在OpenHarmony PC上的完整适配实战
开发语言·后端·鸿蒙