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

本文介绍如何利用Gson库简化Android应用中JSON数据的解析过程,避免手动逐个字段构建对象,提升开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值