gson属性disableHtmlEscaping对等于号的转义\u003d,注解符号Expose,SerializedName,Since和Until
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; } }