Json vs XML
1.数据可读性基本相同
2.解析手段都很多
3.json数据体积更小
4.json与javascript关系紧密
5.json对数据描述更差
中括号代表一个json数组,比如:
[{"name":"zhangsan","age":20},{"name":"lisi","age":21}]
android sdk本身有对json解析的相关类库JsonReader,但是JsonReader只支持3.0及以上。所以只能使用Gson。
1.为了解析json数据,首先要有一个JsonReader对象。初始化JsonReader需要一个StringReader对象做参数。如:
2.Gson可以将json直接解析成对象。这样其实更加方便。如果我没记错的话,专业名词叫“反序列化”。
第二种方法更加方便,即反序列化:
1.数据可读性基本相同
2.解析手段都很多
3.json数据体积更小
4.json与javascript关系紧密
5.json对数据描述更差
中括号代表一个json数组,比如:
[{"name":"zhangsan","age":20},{"name":"lisi","age":21}]
android sdk本身有对json解析的相关类库JsonReader,但是JsonReader只支持3.0及以上。所以只能使用Gson。
1.为了解析json数据,首先要有一个JsonReader对象。初始化JsonReader需要一个StringReader对象做参数。如:
JsonReader reader = new JsonReader(new StringReader(jsonData));
2.Gson可以将json直接解析成对象。这样其实更加方便。如果我没记错的话,专业名词叫“反序列化”。
第一种是简单的解析:
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
while(reader.hasNext()){
reader.beginObject();
while(reader.hasNext()){
String tagName= reader.nextName();
if(tagName.equals("name")){
System.out.println("name->"+reader.nextString());
}
else if (tagName.equals("age")) {
System.out.println("age->"+reader.nextInt());
}
}
reader.endObject();
}
reader.endArray();
第二种方法更加方便,即反序列化:
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println("name->"+user.getName());
System.out.println("age->"+user.getAge());
这样只需提前写好User类(当中对应含有name、age等字段),就可以自动获得相应的对象,实现了数据的解析。
Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);
for (User user : users) {
System.out.println(user.getName());
System.out.println(user.getAge());
}