FastJson解析和Gson解析,业务类权限修饰符的使用有区别

本文探讨了FastJson与Gson在解析Json时的性能差异,指出FastJson由于使用Class的getFields()方法只反射公共成员变量,从而可能比Gson解析更快。同时提到了业务类权限修饰符对两者解析的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、用Gson解析时,业务类的成员变量、内部类的成员变量可以是private权限(当然,也可以是public权限),代码如下:
①业务类:
public class JiuJiuDomain {
    
    private List<JiuJiuListItem> list;

    private static class JiuJiuListItem{
        private String rp_type;
        private String num_iid;
        private String deal_num;
        private String title;
        private String pic_url;
        private String now_price;
        private String show_time;
        private String origin_price;
        private String discount;
        private String start_discount;
        private String is_vip_price;
        private String ling_value;
        private String is_onsale;
        private String total_love_number;
        private String total_hate_number;
        private String is_buy_sale;
        
        @Override
        public String toString() {
            return "JiuJiuListItem [rp_type=" + rp_type + ", num_iid=" + num_iid
                    + ", deal_num=" + deal_num + ", title=" + title + ", pic_url="
                    + pic_url + ", now_price=" + now_price + ", show_time="
                    + show_time + ", origin_price=" + origin_price + ", discount="
                    + discount + ", start_discount=" + start_discount
                    + ", is_vip_price=" + is_vip_price + ", ling_value="
                    + ling_value + ", is_onsale=" + is_onsale
                    + ", total_love_number=" + total_love_number
                    + ", total_hate_number=" + total_hate_number + ", is_buy_sale="
                    + is_buy_sale + "]";
        }
    }

    @Override
    public String toString() {
        return "JiuJiuDomain [list=" + list + "]";
    }
    
}
②Gson解析代码:
Gson gson = new Gson();
JiuJiuDomain jiuJiuDomain = gson.fromJson(jsonString, JiuJiuDomain.class);
System.out.println("jiuJiuDomain=" + jiuJiuDomain);

2、用FastJson解析时,业务类的成员变量、内部类的成员变量必须都是public权限,否则解析出的变量值会为null,代码如下:
①业务类:

把第1点中的业务类的private全替换为public。


②FastJson解析代码:
JiuJiuDomain jiuJiuDomain = JSON.parseObject(jsonString, JiuJiuDomain.class);
System.out.println("jiuJiuDomain=" + jiuJiuDomain);

总结:

FastJson比Gson解析快,有可能与解析时采用的反射方法有关,FastJson使用了只反射公有成员变量的反射方法(Class类的getFields()方法),而Gson使用了反


射全部成员变量的方法(Class类的getDeclaredFields() 方法),getFields()方法和getDeclaredFields() 方法的执行效率明显是有差异的。没看过源码,以上仅为猜测


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值