Gson 和 Fastjson 你不知道的事

    xiaoxiao2021-04-16  31

    背景

      目前在公司负责的业务, 主要是跟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, 对它也是无济于事。

     

    转载请注明原文地址: https://ju.6miu.com/read-672219.html

    最新回复(0)