Android中json的解析

本文深入探讨了JSON与XML的数据可读性、解析手段、体积大小及与JavaScript的关系,并详细介绍了AndroidSDK中对JSON解析的实现方式,包括如何使用JsonReader和Gson进行数据解析。

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

Json vs XML


1.数据可读性基本相同
2.解析手段都很多
3.json数据体积更小
4.json与javascript关系紧密
5.json对数据描述更差


中括号代表一个json数组,比如:
[{"name":"zhangsan","age":20},{"name":"lisi","age":21}]

android sdk本身有对json解析的相关类库JsonReader,但是JsonReader只支持3.0及以上。所以只能使用Gson。


1.为了解析json数据,首先要有一个JsonReader对象。初始化JsonReader需要一个StringReader对象做参数。如:


JsonReader reader = new JsonReader(new StringReader(jsonData));


2.Gson可以将json直接解析成对象。这样其实更加方便。如果我没记错的话,专业名词叫“反序列化”。


第一种是简单的解析:

			JsonReader reader = new JsonReader(new StringReader(jsonData));
			reader.beginArray();
			while(reader.hasNext()){
				reader.beginObject();
				while(reader.hasNext()){
					String tagName= reader.nextName();
					if(tagName.equals("name")){
						System.out.println("name->"+reader.nextString());
					}
					else if (tagName.equals("age")) {
						System.out.println("age->"+reader.nextInt());
					}
				}
				reader.endObject();
			}
			reader.endArray();

第二种方法更加方便,即反序列化:

Gson gson = new Gson();
		User user = gson.fromJson(jsonData, User.class);
		System.out.println("name->"+user.getName());
		System.out.println("age->"+user.getAge());

这样只需提前写好User类(当中对应含有name、age等字段),就可以自动获得相应的对象,实现了数据的解析。


解析json数组时,可以这样:

Type listType = new TypeToken<LinkedList<User>>(){}.getType();
		Gson gson = new Gson();
		LinkedList<User> users = gson.fromJson(jsonData, listType);
		for (User user : users) {
			System.out.println(user.getName());
			System.out.println(user.getAge());
		}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值