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