色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Android Json解析 - 初步

          Android Json解析 - 初步

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

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

          本文引用地址:http://cafeforensic.com/article/201609/305004.htm

          JSON是JavsScript對象符號。

          下面是一個簡單的JSON格式

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

          這就是一個對象,里面的值key是冒號前面的類容,value是冒號后面的類容。

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

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

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

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

          在中括號里全都是對象,這種對象的個數(shù)沒限制,對象里是鍵值對。

          在JSON對象中還可以有對象,如下:

          {

          name:zhangsan,age:22,

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

          }

          這就是說address key是一個對象。

          這就是JSON的基本形式。

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

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

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

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

          }

          結(jié)果如下:

          開始解析的時候調(diào)用reader.beginObject();結(jié)束的時候調(diào)用reader.endObject().應(yīng)為一個對象里可能有很多的鍵值對,所以要使用while循環(huán),當(dāng)對象里的鍵值對都循環(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ù)這個Json的數(shù)據(jù)結(jié)構(gòu),我先解析數(shù)組,所以開始就reader.beginArray();當(dāng)然還要reader.endArray();同樣使用reader.hasNext()來判斷數(shù)組是否都解析完了。

          下面是效果圖:

          3.包含對象的對象解析

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

          {

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


          上一頁 1 2 下一頁

          關(guān)鍵詞:

          評論


          相關(guān)推薦

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

          關(guān)閉