中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 之 json數據的解析(jsonReader)

發布時間:2020-07-27 02:15:17 來源:網絡 閱讀:465 作者:鏡中小白 欄目:移動開發


json數據的解析相對而言,還是比較容易的,實現的代碼也十分簡單。這里用的是jsonReade方法來進行json數據解析。

 

1.在解析之前,大家需要知道什么是json數據。

 

json數據存儲的對象是無序的“名稱/值”對的集合。和其他的數據存儲方式相比,json數據的可讀性,可擴展性,編碼難度,解碼難度都有一定的優勢。在json數據中,

 

對于一個對象:

1)一個對象以“{”(左括號)開始,“}”(右括號)結束。

2)每個“名稱”后跟一個“:”(冒號);

3)“‘名稱/值’對”之間使用“,”(逗號)分隔。

 

對于一個數組:

 

1)一個數組以“[”(左中括號)開始,“]”(右中括號)結束。

2)值之間使用“,”(逗號)分隔。

 

下面是android官方給出的一組json數據示例:

[
   {
    "id": 912345678901,
    "text": "How do I read JSON on Android?",
    "geo": null,
    "user": {
       "name": "android_newb",
      "followers_count": 41
    } 
   },
   {
    "id": 912345678902,
    "text": "@android_newb just useandroid.util.JsonReader!",
    "geo": [50.454722, -104.606667],
    "user": {
      "name": "jesse",
      "followers_count": 2
    }
   }
 ]

 

在代碼中,如果直接定義json數據,需要在代碼中對 使用 \ 轉義。上面json在代碼中的形式為:(在java代碼中,創建一段json數據,“ 符號需要轉義)

private String jsonDate = "["
           + "{\"id\": 912345678901,"
           + "\"text\":\"How do I read JSON onAndroid?\","
            + "\"geo\":null,"
           +"\"user\":{\"name\":\"android_newb\",\"followers_count\":41}},"
           + "{\"id\": 912345678902,"
           + "\"text\":\"@android_newb just useandroid.util.JsonReader!\","
           + "\"geo\":[50.454722,-104.606667],"
           +"\"user\":{\"name\":\"jesse\",\"followers_count\":2}}"
           + "]";

 

1. 使用JsonReader方法解析Json數據對象,你需要創建一個JsonReader對象.

 

2.然后使用beginArray()來開始解析 [ 左邊的第一個數組。

 

3.再使用beginObject()來開始解析數組{中的第一個對象。

 

4.對于直接的數據可以直接得到解析到的數據,但對于在json中嵌套了數組的數據,需要在寫一個解析方法。

 

5.在解析完成后,別忘用endArray(),endObject()來關閉解析。

 

package com.mecury.jsontest;
 
import java.io.IOException;
import java.io.StringReader;
import android.util.JsonReader;
import android.util.JsonToken;
public class JsonUtils {
 
   public void parseJson(String jsonDate) throws IOException{
           //創建JsonReader對象
           JsonReader jsReader = new JsonReader(new StringReader(jsonDate));
           jsReader.beginArray();
           while (jsReader.hasNext()) {
               readMessage(jsReader);
           }
           jsReader.endArray();
   
    }
   
       public void readMessage(JsonReader jsReader) throws IOException{
           jsReader.beginObject();
           while(jsReader.hasNext()){
                String tagName =jsReader.nextName();
                if(tagName.equals("id")) {
                   System.out.println("name:"+jsReader.nextLong());
                }else if(tagName.equals("text")) {
                   System.out.println("text:"+jsReader.nextString());
                }else if(tagName.equals("geo") && jsReader.peek()!=JsonToken.NULL) {
                    readDoubleArray(jsReader);
                }else if(tagName.equals("user")) {
                    readUser(jsReader);
               }else {
                    //跳過當前值
                    jsReader.skipValue();
                   System.out.println("skip======>");
                }
           }
           jsReader.endObject();
       }
       //解析geo中的數據
       public void readDoubleArray(JsonReader jsReader) throws IOException{
           jsReader.beginArray();
           while(jsReader.hasNext()){
               System.out.println(jsReader.nextDouble());
           }
           jsReader.endArray();
       }
       //由于讀取user中的數據
       public void readUser(JsonReader jsReader) throws IOException{
       String userName = null;
       int followsCount = -1;
       jsReader.beginObject();
       while (jsReader.hasNext()) {
           String tagName = jsReader.nextName();
           if (tagName.equals("name")) {
                userName =jsReader.nextString();
               System.out.println("user_name:"+ userName);
           }else if (tagName.equals("followers_count")) {
                followsCount = jsReader.nextInt();
               System.out.println("followers_count:"+followsCount);
           }
       }
       jsReader.endObject();
    }
}

 

對上面的內容解析的輸出:

11-22 06:59:52.441: I/System.out(5329):name:912345678901
11-22 06:59:52.441: I/System.out(5329):text:How do I read JSON on Android?
11-22 06:59:52.461: I/System.out(5329):skip======>
11-22 06:59:52.461: I/System.out(5329):user_name:android_newb
11-22 06:59:52.471: I/System.out(5329):followers_count:41
11-22 06:59:52.481: I/System.out(5329):name:912345678902
11-22 06:59:52.491: I/System.out(5329):text:@android_newb just use android.util.JsonReader!
11-22 06:59:52.500: I/System.out(5329):50.454722
11-22 06:59:52.500: I/System.out(5329):-104.606667
11-22 06:59:52.510: I/System.out(5329):user_name:jesse
11-22 06:59:52.510: I/System.out(5329):followers_count:2

 

以上!另外對APP進行在線全方位的安全性、兼容性測試,我都會用這個:www.ineice.com


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

城固县| 恩平市| 南城县| 揭东县| 乳山市| 建昌县| 沧州市| 措勤县| 合肥市| 岗巴县| 溧水县| 北碚区| 龙胜| 禹州市| 五指山市| 海林市| 佛山市| 峨眉山市| 包头市| 汨罗市| 剑河县| 墨竹工卡县| 南宫市| 安达市| 通州区| 庐江县| 泽州县| 互助| 临泉县| 漳平市| 长治市| 河间市| 茂名市| 锦州市| 麦盖提县| 洞口县| 卢湾区| 大关县| 新河县| 南陵县| 清丰县|