使用Android sdk自帶的jsonReader來解析json

nt1979發表於2021-09-09

json資料的解析相對而言,還是比較容易的,實現的程式碼也十分簡單。這裡用的是jsonReade方法來進行json資料解析。

1.在解析之前,大家需要知道什麼是json資料。

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

對於一個物件:

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

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

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

對於一個陣列:

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

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

對於json檔案

{
   "id": "3232",
   "data": [{
      "data1": "555",
      "data2": "3243"
   },
      {
         "data1": "888",
         "data2": "777"
      }
   ]
}

JsonReader解析的例子是:

public void parseAssertData() {
    InputStream is = null;
    try {
        is = this.getAssets().open("json1.json", Context.MODE_PRIVATE);
        int length = is.available();
        byte[] buffer = new byte[length];
        is.read(buffer);
        String temp = new String(buffer);

        Reader response = new StringReader(temp.toString());
        parseResponse(response);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

private void parseResponse(Reader response) throws IOException {
    JsonReader reader = new JsonReader(response);
    reader.beginObject();
    while (reader.hasNext()) {
        String name = reader.nextName();
        if ("id".equals(name)) {
            String id = reader.nextString();
            System.out.println("===id="+id);
        }
        else if (name.equals("data")) {
            reader.beginArray();
            while (reader.hasNext()) {
                reader.beginObject();

                String name1;
                while (reader.hasNext()) {
                    name1 = reader.nextName();
                    if (name1.equals("data1")) {
                        String s1 = reader.nextString();
                        System.out.println("===s1="+s1);
                    } else if (name1.equals("data2")) {
                        String s2 = reader.nextString();
                        System.out.println("===s2="+s2);
                    }  else {
                        reader.skipValue();
                    }
                }
                reader.endObject();
            }
            reader.endArray();
        }
        else {
            reader.skipValue();
        }
    }
    reader.endObject();
    reader.close();
}

1. 使用JsonReader方法解析Json資料物件,你需要建立一個JsonReader物件.

2.然後使用beginArray()來開始解析 [ 左邊的第一個陣列。

3.再使用beginObject()來開始解析陣列{中的第一個物件。

4.對於直接的資料可以直接得到解析到的資料,但對於在json中巢狀了陣列的資料,需要在寫一個解析方法。

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

程式碼在

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4822/viewspace-2818509/,如需轉載,請註明出處,否則將追究法律責任。

相關文章