一直都是用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