public static void main(String[] args) { String studentJson="{\"username\":\"xiaoming\",\"age\":20,\"desc\":\"好學生\"}"; String studentJson2="{\"username\":\"xiaohong\",\"age\":20,\"desc\":\"好學生\"}"; String[] json={studentJson,studentJson2}; //Student st=(Student) json2Bean(studentJson, Student.class); JSONArray jsonArray=JSONArray.fromObject(json);//json對象存放了很多學生數據 for(Object obj:jsonArray){ Student st=(Student) json2Bean(((JSONObject) obj).toString(), Student.class); System.out.println(st.getUsername()+":"+st.getDesc()); } } //轉化爲班級類 Map<String, Class> classMap = new HashMap<String, Class>(); classMap.put("student", Student.class); String gradeJson="{\"number\":\"1\",\"student\":[{\"username\":\"小明\",\"age\":20,\"desc\":\"好學生\"},{\"username\":\"小紅\",\"age\":20,\"desc\":\"三好學生\"}]}"; Grade grade=(Grade) json2Bean(gradeJson, Grade.class,classMap);//班級裏面存在學生的list集合 for(Student s:grade.getStudent()){ System.out.println(s.getUsername()+":"+s.getAge()); } //沒有複雜的類型 public static Object json2Bean(String json,Class cla){ JSONObject jsonObject=JSONObject.fromObject(json); return JSONObject.toBean(jsonObject, cla); } //對象中存在複雜的類型 public static Object json2Bean(String json,Class cla,Map map){ JSONObject jsonObject=JSONObject.fromObject(json); return JSONObject.toBean(jsonObject, cla,map); } //form轉化爲jsonarray //var jsonData = $("#cprojectEditForm").serializeArray(); //或者$("#cprojectEditForm").serialize();可以直接轉化爲實體類 //alert(JSON.stringify(jsonData)); String jsonForm=request.getParameter("jsonForm"); JSONArray jsonArray=JSONArray.fromObject(jsonForm); for(Object object:jsonArray){ JSONObject jsonObject=JSONObject.fromObject(object); Set<String> set=jsonObject.keySet(); for(String key:set){ System.out.println(key+":"+jsonObject.get(key)); } } //學生類 public class Student { private String username; private int age; private String desc; public Student(){ } public Student(String username,String desc){ this.username=username; this.desc=desc; } public Student(String username,int age ,String desc){ this.username=username; this.desc=desc; this.age=age; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } //班級類 public class Grade { private int number; private List<Student> student; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public List<Student> getStudent() { return student; } public void setStudent(List<Student> student) { this.student = student; } }
利用json-lib框架可以將前臺的json對象轉化爲Java對象,需要如下的jar包,可以將多個Java對象的json數據結構存在數據當中,利用JSONArray轉變爲json數組,然後遍歷該數組可以得到每個json數據所對應的Java對象,調用JSONObject的tobean方法既可以獲得對象實例
如果實體類中存在複雜的集合類型,使用一般的JSONObject.toBean(jsonObject, class);方法的時候會報錯:MorphDynaBean cannot be cast to student,無法轉換爲相應的集合對象,此時我需要定義一個map來存放需要轉換爲集合的相應的Class,如班級類裏面存放的就是學生類的class,即
classMap.put("student", Student.class);
這樣纔可以轉換爲相應的集合類型