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

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

  • 问题背景:

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

相关推荐
JaguarJack40 分钟前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php·服务端
BingoGo41 分钟前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php
Bs_MoneyMagnet4 小时前
基于springboot+vue的滑雪场票务与装备租赁系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
AlienZHOU8 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
狗头大军之江苏分军10 小时前
《潮水漫过十七岁》开学了
后端
苏三说技术11 小时前
如何看待GPT-6在UP主众测中碾压夺冠?它是现在最强大模型吗?
后端
mldong11 小时前
一份 JSON,一条能跑的审批流:把报销流程送上工作流引擎
后端·架构
wno70411 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
Captaincc11 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
aramae12 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端