日期:2014-05-16 浏览次数:20380 次
?
涉及到的jar包主要是gson-2.0.jar(必须,google做了封装所以是gson),log4j.jar(可选)
?
使用范围:所有对象
?
使用方法:
1,对象转json
String aStr = JsonUtils.toJson(A, false);
参数1具体对象(A代表任何对象,可以使集合类型也可以是普通类型),
参数2:是否转换只标注有@Expose的属性,比如说在A中有下列属性:
?private String resultCode;
?@Expose
?private String exception;
?private String startTime;
......get...
......set...
那么在做转换的时候只有属性exception才会被转换,并且不能为null(即使参数2设置为false,为null的属性也不做转换)
?
?
2,json转对象
?A ?a = JsonUtils.fromJson(aStr, A.calss);//参数1是通过json转后的string,参数2:目标对象
?
注意:如果是把List转Json String,在取出的时候不能直接用foreach循环取出
平常我们可能就用如下方式就可以了
① for (Person person: personList) {
②Student stu = ??person.getStudent();
??}
而通过json转之后这样就不可以了,①会抛出java.util.LinkedHashMap cannot be cast to Person
?
可以采用如下方式
List personList= JsonUtils.fromJson(str,List.class); //str是List转为的string类型,上面有说怎么转。
personList:我里面装的虽然是人,但要采用正确的方式把他们放出来,要不然就不是人了
for (int i = 0; i < personList.size(); i++) {
??? ③请先把我转为String吧,要不然我就回不去了
???? String?personStr = JsonUtils.toJson(personList.get(i), false);
??? ④?哈哈,我可以变成人了
??? Person person= JsonUtils.fromJson(personStr ,Person.class);
????⑤good,还可以取到钱
???? Money money = person.getMoney()
????⑥:你醒醒吧⑤,像我这样才可以取到钱
??? String moneyStr = JsonUtils.toJson(person.getMon