Gson 和 Fastjson 你不知道的事


背景

  目前在公司負責的業務, 主要是跟JSON數據打交道, fastjson 、gson都用, 他們適用於不同場景。fastjson號稱是業界處理json效率最高的框架, 沒有之一。但在某些場景下, 效率最高的不一定

能適合你 ~ 

  

來, 先上兩道菜

第一道普通菜 : 

public class User {

    private Long user_id;

    private String user_name;

    public User() {

    }

    public User(Long userId, String name) {
        this.user_id = userId;
        this.user_name = name;
    }

    public Long getUser_id() {
        return user_id;
    }

    public void setUser_id(Long user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }
    
    public void setAge(int age) {
        
    }
    
    public int getAge() {
        return 18;
    }
    
    public void setPwd() {
        
    }
    
    public String getPwd() {
        return "pwd";
    }

}

第二道開胃菜 :

public class GsonAndFastJsonDemo {

    public static void main(String[] args) {
        
        Gson gson = new Gson();
        
        String res = gson.toJson(init());
        System.out.println(res);
        
        res = JSON.toJSONString(init());
        System.out.println(res);
    }
    
    static User init() {
        
        User user = new User();
        user.setUser_id(1L);
        user.setUser_name("威少");
        
        return user;
    }
}

結果一樣么?你猜?

、、、gson
{"user_id":1,"user_name":"威少"} 

、、、fastjson
{"age":18,"pwd":"pwd","user_id":1,"user_name":"威少"}

為毛結果不一樣?感興趣的你, 可以看下源碼, fastjson在序列化的時候, 凡是有getMethod方法,其對應屬性不管是否已定義, 都能返回值。

gson 在序列化對象的時候, 則顯得跟干凈, 沒有定義屬性, 哪怕提供了getMethod, 對它也是無濟於事。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM