转载请注明出处
http://blog.youkuaiyun.com/u014513456/article/details/53197266
Author :ruanjianjiagou@163.com
FastJson 解析序列化对象的 is开头的变量 取值一直为false的解决方案
背景:
在项目开发过程中,服务器给的json串中某变量是这样的“IsNewUser”代表是否为新用户,在转换实体Bean的时候我们通常会借助GsonFormat 自动转换Bean如下实体
public static class ProductsEntity implements Serializable {
private static final long serialVersionUID = -4316440836525137237L;
private String Title;//标题
private double Amount;//金额
private boolean IsNewUser;//是否新用户
public void setTitle(String Title) {
this.Title = Title;
}
public void setAmount(double Amount) {
this.Amount = Amount;
}
public String getTitle() {
return Title;
}
public double getAmount() {
return Amount;
}
public boolean isBuyNewUser() {
return IsBuyNewUser;
}
public void setBuyNewUser(boolean buyNewUser) {
IsBuyNewUser = buyNewUser;
}
}
于是在取值的时候IsNewUser 字段一直为false
无论json中是true还是false 解析出来都是false
问题代码
public void setBuyNewUser(boolean buyNewUser) {
IsBuyNewUser = buyNewUser;
}
应该改为
public void setIsBuyNewUser(boolean buyNewUser) {
IsBuyNewUser = buyNewUser;
}
理论依据为
Bean的命名规则
Bean中对应的set必须和Json中的字段对应,比如Json中有id字段,get方法名应该为setId,必须是set+字段名,字段名忽略大小写,如果字段是类似的is_default,那么set方法名应为setIs_default,下划线不能省略
FastJson是阿里巴巴提供的一个Json处理工具包,具有极快的性能,超越任其他的Java Json parser。使用起来非常方便。
项目主页 :https://github.com/alibaba/fastjson/wiki
引用方式: compile ‘com.alibaba:fastjson:1.2.21’