gson属性disableHtmlEscaping对等于号的转义u003d,注解符号Expose,SerializedName,Since和Until
代码语言:javascript复制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?orderNou003d123344"}
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)) ;
//等于号:orderNou003d123344 被转义了
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;
}
}