a.setStudentList(stuList);
//bean 2 string JSONObject jObj = JSONObject.fromObject(a); String jsonStr = jObj.toString(); System.out.println(jsonStr); //string 2 jsonobject JSONObject jsonObj = JSONObject.fromObject(jsonStr); System.out.println("class name ="+jsonObj.getString("name")); JSONArray jsonArray = jsonObj.getJSONArray("studentList"); for(int i=0; i<jsonArray.size(); i++){ JSONObject student = (JSONObject)jsonArray.get(i); System.out.println("name ="+student.getString("name")); System.out.println("age ="+student.getString("age"));}
//string 2 bean 方法1 Map<String,Class> classMap = new HashMap<>(); classMap.put("studentList", Student.class); ClassA b = (ClassA)JSONObject.toBean(jsonObj, ClassA.class, classMap); System.out.println("class name ="+b.getName()); List<Student> stuList02 = b.getStudentList(); for(int i=0; i<stuList02.size(); i++){ Student stu = stuList02.get(i); System.out.println(stu.getName()); System.out.println(stu.getAge()); }
//string 2 bean 方法2 ObjectMapper objectMapper=new ObjectMapper(); ClassA c = null; try { c=objectMapper.readValue(jsonStr, ClassA.class); System.out.println("class name ="+c.getName()); List<Student> stuList03 = c.getStudentList(); for(int i=0; i<stuList03.size(); i++){ Student stu = stuList03.get(i); System.out.println(stu.getName()); System.out.println(stu.getAge()); } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
package com.test.pojo; import java.util.List; public class ClassA { private String name; private List<Student> studentList; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Student> getStudentList() { return studentList; } public void setStudentList(List<Student> studentList) { this.studentList = studentList; } }
package com.test.pojo; public class Student { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
注:1) JSONObject.fromObject(javabean)中的javabean.class必须为public,否则会报:Property '***' has no getter method
2) JSONObject.toBean可直接用于简单数据类型的Class,如果里面有复杂数据类型,需使用Map<String,Class>,
其中key为复杂数据类型的属性名,Class为复杂数据类型的类名