Android Json解析之实践(二)

首先下载解析JSON需要的Jar包 下载。这是Google提供解析JSON的开源的Json Jar包。

1.最基础的解析

这种解析式最普遍的,根据JSON的格式来解析,我来解析如下的JSON数据:

{"name":"zhangsan","age":22,"address":"太原"}

首先

String s="{\"name\":\"zhangsan\",\"age\":22,\"address\":\"太原\"}";

这里使用反斜杠来使用双引号。

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

声明一个JsonReader对象,将String s传入。

try {
				JsonReader reader=new JsonReader(new StringReader(data));
				reader.beginObject();
				while(reader.hasNext())
				{
					String key=reader.nextName();
					if("name".equals(key))
					{
						System.out.println(reader.nextString());
					}
					if("age".equals(key))
					{
						System.out.println(reader.nextInt());
					}
					if("address".equals(key))
					{
						System.out.println(reader.nextString());
					}
					
				}
				reader.endObject();
				
				
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			

结果如下:

开始解析的时候调用reader.beginObject();结束的时候调用reader.endObject().应为一个对象里可能有很多的键值对,所以要使用while循环,当对象里的键值对都循环完了的话reader.hasNext()方法返回false。reader.nextXXX()获得你所要的值,XXX为类型。

2.解析数组

下面解析如下的Json数据:

[{"name":"zhangsan","age":22,"address":"太原"},

{"name":"lisi","age":20,"address":"黄冈"},

{"name":"wangwu","age":21,"address":"武汉"}]

如下代码:

try {
				JsonReader reader=new JsonReader(new StringReader(data));
				reader.beginArray();
				while(reader.hasNext())
				{
					reader.beginObject();
					while(reader.hasNext())
					{
						String key=reader.nextName();
						if("name".equals(key))
						{
							System.out.println(reader.nextString());
						}
						if("age".equals(key))
						{
							System.out.println(reader.nextInt());
						}
						if("address".equals(key))
						{
							System.out.println(reader.nextString());
						}
						
					}
					reader.endObject();
				}
				reader.endArray();
				
				
				
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}


根据这个Json的数据结构,我先解析数组,所以开始就reader.beginArray();当然还要reader.endArray();同样使用reader.hasNext()来判断数组是否都解析完了。
下面是效果图:

3.包含对象的对象解析

下面我解析如下的Json数据:

{

"name":"zhangsan","age":22,

"address":{"country":"中国","province":"山西","city":"太原"}

}

废话不多说先来代码:

try {
			JsonReader reader=new JsonReader(new StringReader(data));
				
				
				reader.beginObject();
					
					
					
				while(reader.hasNext())
				{
					String key=reader.nextName();
						
					if("name".equals(key))
					{
						System.out.println(reader.nextString());
					}
					if("address".equals(key))
					{
						reader.beginObject();
						while(reader.hasNext())
						{
							String theKey=reader.nextName();
							if("country".equals(theKey))
							{
								System.out.println(reader.nextString());
							}
							if("province".equals(theKey))
							{
								System.out.println(reader.nextString());
							}
							if("city".equals(theKey))
							{
								System.out.println(reader.nextString());
							}
						}
						reader.endObject();
					}
						
						
				}
				reader.endObject();
				
				
				
				
				
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


都给解析出来了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值