继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

使用Android sdk自带的jsonReader来解析json

nickcau
关注TA
已关注
手记 113
粉丝 6508
获赞 303

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()来关闭解析。

代码在https://github.com/nickgao1986/StepSport

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP