Fastjson和jackson的序列化小知識
阿新 • • 發佈:2018-12-21
在使用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())