首页 > 代码库 > Json数据解析

Json数据解析

1 Java代码:
"[{"name":"kevin","age":25},{"name":"cissy","age":24}]";

这是一个json数组。解析的流程: 
  1. 碰到"[",开始解析Json数组。 
  2. 碰到"{",开始解析Json对象。 
  3. 解析Json对象里面的值。 
  4. 碰到"}",解析Json对象结束。 
  5. 碰到"]",解析Json数组结束。 
  另外Gson可以直接解析Json数组或者对象到你自定义的一个对象,这里我就多作解释了。代码里注释写的很清楚。 
  代码如下: 

 1 package com.kevin.json; 2  3 import java.io.IOException; 4 import java.io.StringReader; 5 import java.lang.reflect.Type; 6 import java.util.Iterator; 7 import java.util.LinkedList; 8  9 import com.google.gson.Gson;10 import com.google.gson.reflect.TypeToken;11 import com.google.gson.stream.JsonReader;12 13 public class JsonUtils {14     public void parseJson(String jsonData){15         // 解析JSON数据,首先要创建一个JsonReader对象16         JsonReader reader = new JsonReader(new StringReader(jsonData));17         try {18             // 开始解析JSON数组19             reader.beginArray();20             // 循环读取JSON中的数组21             while(reader.hasNext()){22                 // 开始解析JSON数组里的对象23                 reader.beginObject();24                 // 循环读取JSON数组中的对象25                 while(reader.hasNext()){26                     String tagName = reader.nextName();27                     if(tagName.equals("name")){28                         System.out.println("name---->" + reader.nextString());29                     }30                     else if(tagName.equals("age")){31                         System.out.println("age---->" + reader.nextInt());32                     }33                 }34                 reader.endObject();35             }36             reader.endArray();37         } catch (IOException e) {38             e.printStackTrace();39         }    40     }41     public void parseUserFromJson(String jsonData){42         // 解析json对象并赋值给User对象43         Gson gson = new Gson();44         User user = gson.fromJson(jsonData, User.class);45         System.out.println("name---->" + user.getName());46         System.out.println("age---->" + user.getAge());47     }48     // 解析JSON数组并赋值给User对象49     public void parseUserArrayFromJson(String jsonData){50         // 取得该类型的实体51         Type listType = new TypeToken<LinkedList<User>>(){}.getType();52         Gson gson = new Gson();53         LinkedList<User> users = gson.fromJson(jsonData, listType);54         for(Iterator<User> iterator = users.iterator(); iterator.hasNext();){55             User user = (User)iterator.next();56             System.out.println("name---->" + user.getName());57             System.out.println("age---->" + user.getAge());58         }59     }60 }

 

Json数据解析