现在的位置: 首页 > 综合 > 正文

JSON文档解析 三种方法

2018年04月01日 ⁄ 综合 ⁄ 共 1480字 ⁄ 字号 评论关闭
private String jsonData1="[{\"name\":\"renhaili\",\"age\":20},{\"name\":\"zhouxiaodong\",\"age\":21}]";
private String jsonData2="{\"name\":\"xiong\",\"age\":18}";
 
/**
 * 解析方法一
 * @param jsonData
 */
 public void parseJson(String jsonData) {
  // 如果需要从解析json数据,首先要生成一个jsonReader对象
  JsonReader reader = new JsonReader(new StringReader(jsonData));
  try {
   // 现在开始解析
   reader.beginArray();// 开始解析数组
   while (reader.hasNext()) {
    reader.beginObject();// 开始解析对象
    while (reader.hasNext()) {
     String tagName = reader.nextName();
     if (tagName.equals("name")) {
//      System.out.println(reader.nextString());
      Log.v("name", reader.nextString());
     } else if (tagName.equals("age")) {
//      System.out.println(reader.nextInt());
      Log.v("age", ""+reader.nextInt());
     }
    }
    reader.endObject();// 结束对象解析
   }
   reader.endArray();// 结束数组解析
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 /**
  * 解析方法2
  * @param jsonData
  */
 public void pareUserFromJson(String jsonData){
  Gson gson=new Gson();//创建Gson对象,
  User user=gson.fromJson(jsonData,User.class);
  Log.v("用户名:",user.getName());
  Log.v("年龄:",""+user.getAge());
 }
 /**
  * 解析方法3
  * @param jsonData
  */
 public void parseJsonFromUser(String jsonData){
  //likedlist是双向列表
  Type listType=new TypeToken<LinkedList<User>>(){}.getType();
  Gson gson=new Gson();
  LinkedList<User> users=gson.fromJson(jsonData, listType);
  for(Iterator<User> iterator=users.iterator();iterator.hasNext();){
   User user=(User)iterator.next();
   Log.v("用户名:",user.getName());
   Log.v("年龄:",""+user.getAge());
  }
 }

抱歉!评论已关闭.