android 解析服务器json对象,数组

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

猜你喜欢

转载自zyqwst.iteye.com/blog/1980256
今日推荐