日期:2014-05-16 浏览次数:20359 次
首先下载解析JSON需要的Jar包 下载。这是Google提供解析JSON的开源的Json Jar包。
这种解析式最普遍的,根据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为类型。
如下代码:
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数据:
{
"name":"zhangsan","age":22,
"address":{"country":"中国","province":"山西","city":"太原"}