gson属性disableHtmlEscaping对等于号的转义\u003d,注解符号Expose,SerializedName,Since和Until
2024-10-20 03:16:44
gson属性disableHtmlEscaping对等于号的转义\u003d,注解符号Expose,SerializedName,Since和Until
package com.example.core.mydemo; import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder; /**
* GsonBuilder builder = new GsonBuilder();
* // builder.excludeFieldsWithoutExposeAnnotation();
*
* 因为这里我们的gson使用了gsonBuilder的excludeFieldsWithoutExposeAnnotation()方法来构造.
* 它表示任何没有被@Expose注解的字段都将被忽略, 并且即使用了@Expose但serialize=false 时也不会被序列化。
* ps: 默认Expose: serialize = true, deserialize= true
* 反序列化同理.
*
*
* @SerializedName (作用域field)
* 这个注解只是用于映射数据的key用的。比如常用的json的key.
* 上面的例子。如果在id属性上加个@SerializedName("_id"). 将会输出
*
* @Since 和 @Until
* 这2个注解用于表示数据序列化的最早版本since(自从),和最晚版本until(直到).
* 也是搭配GsonBuilder使用的。
* //这里设置当前版本为2.0. 那么since大于2.0的不被序列化和反序列化。
* //until小于2.0的不被序列化和反序列化。
* Gson gson = new GsonBuilder().setVersion(2.0).create();
* 打印输出:
JSon={"path":"/pages/index?orderNo=123344"}
Gson={"path":"/pages/index?orderNo=123344"}
Gson转义等号={"path":"/pages/index?orderNo\u003d123344"}
JACKSON={"path":"/pages/index?orderNo=123344"} *
*/
public class EncodeTest { // 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper(); public static void main(String[] args) {
String path = "/pages/index?orderNo=123344"; // String pathNew = "/"+path.replace("\u003d","=");
// System.out.println("pathNew=" + pathNew); JsonVO vo = new JsonVO();
vo.setPath(path); System.out.println("JSon=" + JSON.toJSONString(vo)); GsonBuilder builder = new GsonBuilder();
// builder.excludeFieldsWithoutExposeAnnotation();
//设置属性:disableHtmlEscaping
Gson gson = builder.disableHtmlEscaping().create(); System.out.println("Gson=" + gson.toJson(vo)) ; //等于号:orderNo\u003d123344 被转义了
System.out.println("Gson转义等号=" + new Gson().toJson(vo)) ; try {
//过滤null属性
MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
System.out.println("JACKSON=" + MAPPER.writeValueAsString(vo));
} catch (JsonProcessingException e) {
e.printStackTrace();
} }
} package com.example.core.mydemo; public class JsonVO {
String path; public String getPath() {
return path;
} public void setPath(String path) {
this.path = path;
}
}
最新文章
- 2000条你应知的WPF小姿势 基础篇<;78-81 Dialog/Location/WPF设备无关性>;
- scrollWidth,clientWidth,offsetWidth的区别
- java验证码刷新
- 在GitHub上建立个人主页的方法
- Python中optionParser模块的使用方法[转]
- Oracle 11gR2中启动Scott用户的方法
- 01-03-02-2【Nhibernate (版本3.3.1.4000) 出入江湖】CRUP操作-Save方法的一些问题
- C#与C++相比较之STL篇
- PHP和MySQL Web开发 原书第4版 高清文字版,有目录,附带源码
- echarts_部分图表配置_dataZoom精确控制显示数据数量
- 深搜(DFS)广搜(BFS)详解
- 机器学习数学|偏度与峰度及其python实现
- 织梦CMS安装分享插件
- Spring-Data-JPA整合MySQL和配置
- manjaro下的.vimrc
- USGS-EROS项目espa-surface-reflectance中的Landsat8 大气校正LaSRC Version 1.3.0模块利用vs2010编译出windows64位版本(四)
- mysql 查询 两个表中不同字段的 和,并通过两个表的时间来分组
- 最近的AI
- Unable to docker login through CLI - unauthorized: incorrect username or password
- Linux 下 pushd,popd,cd- 用法
热门文章
- 化学式latex语法
- LeetCode-1609 奇偶树
- windows 服务删除或停止
- MyBatis-Plus通用Iservice 方法详解
- 8. fitBounds(用了这个你就不用在设置zoom, minZoom, maxZoom, center)
- Word11 工程学院讲师论文office真题
- 使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决办法
- 客户端发送信息给服务器以及服务器接收客户端发来的信息(socket)
- Maven项目中配置文件资源导出问题
- JAVA丑数