1. 程式人生 > >Fastjson和jackson的序列化小知識

Fastjson和jackson的序列化小知識

在使用Fastjson和Jackson對物件進行序列化時,針對物件的get方法進行序列化(即使沒有顯示宣告屬性),不同的工具處理方式也有所不同,比如會處理掉大小寫,下劃線,數字,排序等等,如圖:

public class TestClass {

    public String get2A(){
        return "";
    }

    public String get1B(){
        return "";
    }

    public String Get222(){
        return "";
    }

    public String get333(){
        return "";
    }

    public String get_213(){
        return "";
    }

    public String getZ_213(){
        return "";
    }

    public String getMad(){
        return "";
    }

    public String getMad_Sad(){
        return "";
    }

    public String getMad_sad(){
        return "";
    }

    public String getMadSad(){
        return "";
    }

    public String get_sad(){
        return "";
    }

}

處理程式碼:

JsonMapper來自於Jackson

JSON來自於Fastjson

System.out.println(JsonMapper.simpleMapper().toJson(new TestClass()));
System.out.println(JSON.toJSONString(new TestClass()));

返回結果

{"1B":"","2A":"","333":"","mad":"","mad_Sad":"","mad_sad":"","madSad":"","_sad":"","_213":"","z_213":""}
{"1B":"","213":"","2A":"","mad":"","madSad":"","mad_Sad":"","mad_sad":"","sad":"","z_213":""}

總結 :

1.只有get開頭的方法會被序列化(如:Get222()未參與序列化)

2.Jackson和Fastjson都會對結果進行排序,排序規則略有不同

3.FastJson會忽略純數字(如get333()),以下劃線開頭會去掉下劃線(如get_sad())