json對象轉化Java對象

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);

這樣纔可以轉換爲相應的集合類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章