Android中json的解析


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只支持3.0及以上。所以只能使用Gson。

1.为了解析json数据,首先要有一个

JsonReader对象。初始化JsonReader需要

一个StringReader对象做参数。如:
  1. JsonReader reader = new JsonReader(new StringReader(jsonData));  
2.Gson可以将json直接解析成对象。这样


其实更加方便。如果我没记错的话,专业

名词叫“反序列化”。

第一种是简单的解析:

  1. JsonReader reader = new JsonReader(new StringReader(jsonData));  
  2. reader.beginArray();  
  3. while(reader.hasNext()){  
  4.     reader.beginObject();  
  5.     while(reader.hasNext()){  
  6.         String tagName= reader.nextName();  
  7.         if(tagName.equals("name")){  
  8.             System.out.println("name->"+reader.nextString());  
  9.         }  
  10.         else if (tagName.equals("age")) {  
  11.             System.out.println("age->"+reader.nextInt());  
  12.         }  
  13.     }  
  14.     reader.endObject();  
  15. }  
  16. reader.endArray();  
第二种是反序列化:
  1. Gson gson = new Gson();  
  2.         User user = gson.fromJson(jsonData, User.class);  
  3.         System.out.println("name->"+user.getName());  
  4.         System.out.println("age->"+user.getAge());  
解析json数组时,可以这样:
  1. Type listType = new TypeToken<LinkedList<User>>(){}.getType();  
  2.         Gson gson = new Gson();  
  3.         LinkedList<User> users = gson.fromJson(jsonData, listType);  
  4.         for (User user : users) {  
  5.             System.out.println(user.getName());  
  6.             System.out.println(user.getAge());  
  7.         }  

相关内容