Gson解析遇到转义的问题

本文探讨了如何在使用Gson转换Bean到JSON时,遇到的字符转义问题,通过GsonBuilder的disableHtmlEscaping方法解决,并以实际案例分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

善与恶的相互渗透是自然法则中的常规现象,有些事情不是能用好坏善恶定义的。


1. 背景

# 原来的JSON字符串是这个的。
{
	"deviceNo": "lmi",
	"h5Url": "https://web.xxx.com/info/singleBoard?boardId=10086&ref=setting_product",
	"nativeUrl": "io://xxx.com/product/detail?id=1731&name=feedback"
}

采用Gson 的 toJson() 将Bean转成JSON字符串,结果就变成了下面这个样子。

{
	"deviceNo": "lmi",
	"h5Url": "https://web.xxx.com/info/singleBoard?boardId\u003d10086\u0026ref\u003dsetting_product",
	"nativeUrl": "io://xxx.com/product/detail?id\u003d1731&name\u003dfeedback"
}

经过比对:

  1. “=“ 转义为 “\u003d“
  2. “&” 转义为“\u0026“

2. 解决方案

GsonBuilder.disableHtmlEscaping() 获取Gson实例,再进行toJson() 即可。

参考自:Json converts & in a String to \u0026

### Java使用 EasyExcel 库的教程 #### 1. 易用性和功能概述 EasyExcel 是由阿里巴巴开源的一个用于处理 Excel 的轻量级框架,其核心优势在于能够有效减少内存消耗并支持大文件的数据解析。通过流式读取的方式,该库可以显著降低因一次性加载大量数据而导致的 OOM(Out of Memory)风险[^3]。 --- #### 2. Maven 依赖配置 为了在项目中引入 EasyExcel 功能,需先将其作为依赖项加入 `pom.xml` 文件: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.0-beta2</version> </dependency> ``` 上述代码片段展示了如何正确添加 EasyExcel 到基于 Maven 构建的 Java 工程中[^4]。 --- #### 3. 数据模型定义 在实际开发过程中,通常会创建一个类来映射 Excel 表格中的列结构。假设我们需要操作一份员工信息表,则可设计如下实体类: ```java import com.alibaba.excel.annotation.ExcelProperty; public class EmployeeData { @ExcelProperty("姓名") private String name; @ExcelProperty("年龄") private Integer age; @ExcelProperty("部门") private String department; // Getter 和 Setter 方法省略... } ``` 此部分说明了如何借助注解机制实现字段与 Excel 单元格之间的绑定关系[^2]。 --- #### 4. 写入 Excel 示例 以下是将一组对象写入到 Excel 文档的具体方法: ```java import com.alibaba.excel.EasyExcel; import java.util.ArrayList; import java.util.List; public class WriteExample { public static void main(String[] args) { String fileName = "employee_data.xlsx"; List<EmployeeData> data = new ArrayList<>(); data.add(new EmployeeData("张三", 28, "研发部")); data.add(new EmployeeData("李四", 34, "市场部")); EasyExcel.write(fileName, EmployeeData.class).sheet("Sheet1").doWrite(data); } } ``` 以上代码实现了向指定路径生成一个新的 Excel 文件,并填充相应的业务数据。 --- #### 5. 读取 Excel 示例 对于从已有 Excel 文件提取内容的需求,可以通过以下方式完成: ```java import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; public class ReadExample extends AnalysisEventListener<EmployeeData> { @Override public void invoke(EmployeeData employeeData, AnalysisContext analysisContext) { System.out.println(employeeData.toString()); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { System.out.println("所有数据已解析完毕!"); } public static void main(String[] args) { String fileName = "employee_data.xlsx"; EasyExcel.read(fileName, EmployeeData.class, new ReadExample()).sheet().doRead(); } } ``` 这里展示了一个监听器模式的应用场景——每当遇到一条录时都会触发回调函数执行逻辑。 --- #### 总结 综上所述,EasyExcel 提供了一套简洁高效的 API 接口帮助开发者快速集成 Excel 操作能力至自己的应用程序之中。无论是简单的增删改查还是复杂的报表生成功能都能轻松应对。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值