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;
    }
}

 

posted on 2023-02-13 13:21  oktokeep  阅读(412)  评论(0编辑  收藏  举报