阿里巴巴开发手册中:
“POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。反例:定义为基本数据类型boolean isSuccess 的属性,它的方法也是isSuccess(),RPC框架在反向解析的时候,以为对应的属性名称是success,导致属性获取不到,进而抛出异常”。
package org.cjr.test.testmodel;
import java.io.IOException;
import java.io.Serializable;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
public class BooleanTest {
public static void main(String[] args) throws IOException {
Model model = new Model();
model.setSuccess(true);
Gson gson =new Gson();
/**根据{“success”:true}这个json串,Gson框架在通过解析后,通过反射寻找Model类中的success属性,
但是Model类中只有isSuccess属性,所以,最终反序列化后的Model类的对象中,isSuccess则会使用默认值false。
*
*/
System.out.println(gson.fromJson(JSON.toJSONString(model), Model.class));
System.out.println(gson.toJson(model));
}
}
class Model implements Serializable
{
private boolean isSuccess;
public boolean isSuccess() {