json格式的数据一般就是两种类型的,一种是数组类型的,一种是对象类型的。
数组类型:[{"id":"a001","name":"zhangsan","age":20,"sex":"male","address":"beijing"},{"id":"a002","name":"lisi","age":20,"sex":"female","address":"beijing"}]
对象类型:{"id":"a001","name":"zhangsan","age":20,"sex":"male","address":"beijing"}
第一种方式:使用JsonReader对象来解析数组类型的json数据。 具体实现方式请参考一下代码。
public static List<Student> jsonReaderToJsonParser(String jsonData) { list = new ArrayList<Student>(); // 使用jsonreader对象解析json数据,使用new 关键字实例化一个JsonReader对象 @SuppressWarnings("resource") JsonReader jsonReader = new JsonReader(new StringReader(jsonData)); try { jsonReader.beginArray();// 开始解析数组[{key:value,key:value},{key:value,key:value}] while (jsonReader.hasNext()) {// 判断是否有下一个数组,如果有,就进入 jsonReader.beginObject();// 开始解析一个json对象{key:value,key:value} student = new Student(); while (jsonReader.hasNext()) { String keysName = jsonReader.nextName(); // 获得Key的名称 if (keysName.equals("id")) { student.setId(jsonReader.nextString()); } else if (keysName.equals("name")) { student.setName(jsonReader.nextString()); } else if (keysName.equals("sex")) { student.setSex(jsonReader.nextString()); } else if (keysName.equals("age")) { student.setAge(Integer.parseInt(jsonReader.nextString())); } else if (keysName.equals("address")) { student.setAddress(jsonReader.nextString()); } } list.add(student); jsonReader.endObject(); // 结束json对象的解析 } jsonReader.endArray(); // 结束数组的解析 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; }
第二种方式:使用google提供的Gson工具解析对象类型的json数据。具体实现方式请参考一下代码。
// 解析json对象,通过Gson对象的fromJson方法将json对象直接转换成Student实体对象("{"id":"A001","name":"zhangsan","sex":"male","age":20,"address":"beijing"}") public static List<Student> gsonToJsonParser(String jsonData) { //实例化一个List数组 list = new ArrayList<Student>(); //创建一个Gson对象 Gson gson = new Gson(); //调用Gson对象的fromJson函数,返回一个Student对象 Student student = gson.fromJson(jsonData, Student.class); list.add(student); return list; }
第三种方式:使用Gson工具解析数组类型的json数据
// 解析json数组,通过使用Gson对象的fromJson方法装载json数据 public static List<Student> parseStudentFromJson(String jsonData) { list = new LinkedList<Student>(); // 实例化一个Type对象 Type listType = new TypeToken<LinkedList<Student>>() { }.getType(); // 实例化一个Gson对象 Gson gson = new Gson(); // 通过调用Gson的fromJson函数返回一个List集合的数组 list = gson.fromJson(jsonData, listType); return list; }