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, 对它也是无济于事。

 

posted @   坚守一辈子的幸福  阅读(13571)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示