首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Android Json解析之实践(2)

2012-09-23 
Android Json解析之实践(二)首先下载解析JSON需要的Jar包 下载。这是Google提供解析JSON的开源的Json Jar包

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 blocke.printStackTrace();}

结果如下:

Android Json解析之实践(2)

开始解析的时候调用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 blocke.printStackTrace();}


根据这个Json的数据结构,我先解析数组,所以开始就reader.beginArray();当然还要reader.endArray();同样使用reader.hasNext()来判断数组是否都解析完了。
下面是效果图:Android Json解析之实践(2)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 blocke.printStackTrace();}


Android Json解析之实践(2)

都给解析出来了。

热点排行