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