一直都是用android自带的org.json.JSONObject来解析服务器发过来的json string,如果json是个List<Object>,下面是我以前的做法。
// 把JsonArray对象转换成List<WmsSpzl>
protected List<WmsSpzl> loadGoodsList(JSONArray arr)throws JSONException {
List<WmsSpzl> spList=new ArrayList<WmsSpzl>();
for (int i = 0; i < arr.length(); i++) {
JSONObject a = (JSONObject) arr.get(i);
WmsSpzl w = new WmsSpzl();
w.setId(a.getLong("id"));
w.setDm(a.getString("dm"));
w.setMc(a.getString("mc"));
w.setGg(a.getString("gg"));
spList.add(w);
}
return spList;
}
你没看错,需要把所有的字段一个一个取出来再构建List。。。相当麻烦不说,如果字段名称写错还会报错,比java的要麻烦很多,每次这样写真的很蛋疼,本来打算自己写一个类似java的json工具类,可以直接把json 解析成对象或者List。一不小心发现了google已经有这个好东西了,用的时候直接引入一个jar包就行了。下面是实例,末尾会贴出jar包下载地址。
//Person类
public class Person {
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;
}
}
下面是把Person对象封装Json
Person p=new Person();
p.setId(111);
p.setName("Albert");
Gson gson=new Gson();
String json=gson.toJson(p);
打印json值,输出为:{"id":111,"name":"Albert"},当然解析json如下
//json是Person的json 字符串
Person p=gson.fromJson(json, Person.class);
bean的解析就像上面写得很简单。
把List转换为json和上面Person转换一样,不再赘述
List的解析稍微有点儿变动:如下
List<Person> l=gson.fromJson(json, new TypeToken<List<Person>>() {}.getType());
如果对象中有Date类型时,需要设置pattern来解析或者转换为json:
Gson gson=new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
如此Date类型会按照设置的pattern解析或转换
转载请注明出处,本文唯一地址
http://zyq790321193.iteye.com/admin/blogs/1980256
gson.jar下载地址
http://google-gson.googlecode.com/files/google-gson-2.2.4-release.zip