zoukankan      html  css  js  c++  java
  • 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, 对它也是无济于事。

  • 相关阅读:
    搞懂:MVVM模型以及VUE中的数据绑定数据劫持发布订阅模式
    搞懂:前端跨域问题JS解决跨域问题VUE代理解决跨域问题原理
    搞懂js中小数运算精度问题原因及解决办法
    前端对base64编码的理解,原生js实现字符base64编码
    【置顶】我的联系方式
    浅析Block闭包
    再探NSString
    OC属性与实例变量
    IsEqual与Hash个人理解
    Copy与mutableCopy的个人理解
  • 原文地址:https://www.cnblogs.com/chenmo-xpw/p/6128913.html
Copyright © 2011-2022 走看看