日期:2014-05-16  浏览次数:20387 次

实用的Json工具类(Gson)

?

涉及到的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