JSON的String字符串與Java的List列表對象的相互轉換
阿新 • • 發佈:2017-08-17
toc 數據 pan tex .get ava lec bean對象 讀取數據
在前端: 1.如果json是List對象轉換的,可以直接遍歷json,讀取數據。 2.如果是需要把前端的List對象轉換為json傳到後臺,param是ajax的參數,那麽轉換如下所示: var jsonStr = JSON.stringify(list); var param= {}; param.jsonStr=jsonStr;
在後臺: 1.把String轉換為List(str轉換為list) List<T> list = new ArrayList<T>(); JSONArray jsonArray = JSONArray.fromObject(str);//把String轉換為json list = JSONArray.toList(jsonArray,t);//這裏的t是Class<T> 在這裏,因為得到json字符串的時候用的是 JSONArray.fromObject(collenction),所有,在講json字符串轉換成json對象的時候, 也只能用JSONArray.toCollection,並且,一定要帶上後面的class參數。
2.把List轉換為json JSONArray json = JSONArray.fromObject(object); String str = json.toString();//把json轉換為String 再如: Teacher類中,有三個屬性。 private String teaId; private String teaName; private List<Student> stus; Teacher teacher_1 = new Teacher("編號1", "教師1", stus); JSONObject obj = JSONObject.fromObject(teacher_1); 這一步,將Teacher 對象轉換成json字符串的時候,沒有任何的問題。下面,將JSONObject 轉換成Teacher 對象,如果,不加後面的class參數,也會報這兒錯誤。加了後,這一步也正常。 Teacher teacherBean= (Teacher) JSONObject.toBean(obj, Teacher.class); Student studentBean = teacherBean.getStus().get(0); 當從teacherBean 對象中取出stus屬性的值時候,就會提示: Java.lang.ClassCastException:net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.edu.xukai.Student 用這種方式可以解決: Map<String, Class> classMap = new HashMap<String, Class>(); classMap.put("stus", Student.class); Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class, classMap); 其中map對象是teacherBean對象中各個屬性的類型,map額key是屬性每次,value是屬性的類型。 JSONArray.toArray(jsonArray, objectClass, classMap) JSONArray.toList(jsonArray, objectClass, classMap) 也支持這樣的方式。
JSON的String字符串與Java的List列表對象的相互轉換