<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          Android Json解析 - 初步

          作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

          JSON與XML一樣都是數(shù)據(jù)格式,JSON的數(shù)據(jù)格式比XML更小。這里主講JSON。

          本文引用地址:http://www.ex-cimer.com/article/201609/305004.htm

          JSON是JavsScript對(duì)象符號(hào)。

          下面是一個(gè)簡(jiǎn)單的JSON格式

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

          這就是一個(gè)對(duì)象,里面的值key是冒號(hào)前面的類容,value是冒號(hào)后面的類容。

          JSON還可以有數(shù)組的形式,如下:

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

          {name:lisi,age:20,address:黃岡},

          {name:wangwu,age:21,address:武漢}]

          在中括號(hào)里全都是對(duì)象,這種對(duì)象的個(gè)數(shù)沒限制,對(duì)象里是鍵值對(duì)。

          在JSON對(duì)象中還可以有對(duì)象,如下:

          {

          name:zhangsan,age:22,

          address:{country:中國(guó),province:山西,city:太原}

          }

          這就是說address key是一個(gè)對(duì)象。

          這就是JSON的基本形式。

          首先下載解析JSON需要的Jar包 下載。這是Google提供解析JSON的開源的Json Jar包。

          1.最基礎(chǔ)的解析

          這種解析式最普遍的,根據(jù)JSON的格式來(lái)解析,我來(lái)解析如下的JSON數(shù)據(jù):

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

          首先

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

          這里使用反斜杠來(lái)使用雙引號(hào)。

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

          聲明一個(gè)JsonReader對(duì)象,將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();

          }

          結(jié)果如下:

          開始解析的時(shí)候調(diào)用reader.beginObject();結(jié)束的時(shí)候調(diào)用reader.endObject().應(yīng)為一個(gè)對(duì)象里可能有很多的鍵值對(duì),所以要使用while循環(huán),當(dāng)對(duì)象里的鍵值對(duì)都循環(huán)完了的話reader.hasNext()方法返回false。reader.nextXXX()獲得你所要的值,XXX為類型。

          2.解析數(shù)組

          下面解析如下的Json數(shù)據(jù):

          [{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();

          }

          根據(jù)這個(gè)Json的數(shù)據(jù)結(jié)構(gòu),我先解析數(shù)組,所以開始就reader.beginArray();當(dāng)然還要reader.endArray();同樣使用reader.hasNext()來(lái)判斷數(shù)組是否都解析完了。

          下面是效果圖:

          3.包含對(duì)象的對(duì)象解析

          下面我解析如下的Json數(shù)據(jù):

          {

          name:zhangsan,age:22,

          address:{country:中國(guó),province:山西,city:太原}

          }

          廢話不多說先來(lái)代碼:

          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();


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();