问题描述:
普通的arraylist在转换json格式的时候,出现错误,多了字段
对象:
public class testBean {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String gettrimname() {
return name.trim();
}
public String test2(){
return name+">>>>>>>测试方法";
}
}
测试:
public class testMain {
public static void main(String[] args) {
List<testBean> lis=new ArrayList<testBean>();
testBean t1=new testBean();
t1.setId(1);
t1.setName("zhangsan ");
testBean t2=new testBean();
t2.setId(2);
t2.setName("lisi ");
lis.add(t1);
lis.add(t2);
System.out.println(JSONArray.fromObject(lis));
Gson gson=new Gson();
System.out.println(gson.toJson(lis));
}
}
结果:
发现使用JSONArray转换json,多出了trimname字段,trimname字段来自于对象中多写的gettrimname方法
但是gson没有出现并且没有调用gettrimname方法。
查看源码,发现jsonarry把解析了对象中所有的get,set方法,做为writeMethod,readMethod方法
然后存储在jsonObject中,就是一个map结构,当然在操作每一个属性的时候,也用到强转等操作
也就明白了,当对象中添加除了getset方法之外的方法还是要慎重的,别用get,set开头
那gson是如何操作的呢?
也就明白了为什么最初的转json会出现问题