fastjson|JackJson|Gson序列化区别

结论:

1.fastjson和jackJson:在把对象序列化成字符串的时候,是通过反射遍历该类中的所有的getter方法,通过getXX或者isXX ,然后根据JavaBeans规则-> 得到属性名称,XX,然后直接序列化为字符串。

2.Gson:在把对象序列化成字符串的时候,他是通过反射遍历该类中的所有属性,并把其值序列化成json字符串的



补充:

根据JavaBeans Specification规定,如果是普通的参数propertyName,要以以下方式定义其setter/getter:
public <PropertyType> get<PropertyName>();
public void set<PropertyName>(<PropertyType> a);

但是,布尔类型的变量propertyName则是单独定义的:
public boolean is<PropertyName>();
public void set<PropertyName>(boolean m);
success方法的 getter 应该是isSuccess/getSuccess,而isSuccess的getter 应该是isIsSuccess/getIsSuccess。

例子:

public class Model implements Serializable {

    private static final long serialVersionUID = 1836697963736227954L;

    private Boolean isSuccess;

    public Boolean isSuccess() {
        return isSuccess;
    }
    public void setSuccess(Boolean success) {
        isSuccess = success;
    }
    public String getHollis(){
        return "hollischuang";
    }
}
public class SerializeTest {

    public static void main(String[] args) throws JsonProcessingException {
        serializeTest();

        System.out.println("=================================");

        deSerializeTest();
    }
    public static void serializeTest() throws JsonProcessingException {
        Model model = new Model();
        model.setSuccess(true);
        //使用fastjson(1.2.16)序列化model成字符串并输出

        System.out.println("Serializable Result With fastjson :" + JSON.toJSONString(model));

        //使用Gson(2.8.5)序列化model成字符串并输出

        Gson gson =new Gson();

        System.out.println("Serializable Result With Gson :" +gson.toJson(model));

        //使用jackson(2.9.7)序列化model成字符串并输出

        ObjectMapper om = new ObjectMapper();
        System.out.println("Serializable Result With jackson :" +om.writeValueAsString(model));
    }
    public static void deSerializeTest(){
        Model model = new Model();
        model.setSuccess(true);
        Gson gson = new Gson();
        Model mode = gson.fromJson(JSON.toJSONString(model), Model.class);
        System.out.println(gson.toJson(mode));
    }


}

注意:Boolean值的属性取名时,慎用is开头,避免踩坑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值