习安卓一段时间了。突然觉得前面所学的大多没什么用,现在开始重新整理一遍。现在主要学习和网络相关的安卓知识了。毕竟现在的安卓应用,大多都跟做网络客户端有关的。
这是学习笔记整理的第一篇,记录下Json数据解析,用的gson包。
json就是键值对的集合。
Android一般运用到json解析的地方都是应用通过http向服务器请求信息后,服务器返回json数据,Android将其中的每个json对象解析成相应的Bean对象,如下面的json数据:
[{"name":"zhangsan","age":20},["name":"lisi","age":19]]
此为一个json数组,里面包含两个人的对象。
我们解析便是把两个对象提取出来:
1、在android工程里生成一个Person类,person类的成员有name和age,对于json数据里面的对象。
2、写一个json解析的类,直接返回一个List对象,包含解析好的两个person对象,类的构建如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package com.example.jsontest2;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.stream.JsonReader;
public class JsonUtils {
private List<Person> persons = null;
private Person person = null;
public List<Person> getPersons(String jsonData){
try {
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
persons = new ArrayList<Person>();
while (reader.hasNext()) {
reader.beginObject();
person = new Person();
while(reader.hasNext()){
String tagName = reader.nextName();
if (tagName.equals("name")) {
person.setName(reader.nextString());
}else if(tagName.equals("age")){
person.setAge(reader.nextInt());
}
}
reader.endObject();
persons.add(person);
}
reader.endArray();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return persons;
}
}
|
在需要时调用JsonUtils的getPersons方法即可。这当然是比较简单的一种json数据解析。。