Java中Json的序列化和反序列化


/** * 由字符串反序列化成實體類 針對的是一個實體,此實體中的屬性不包括自定義的類型,如Teacher類型,或者List<Teacher>類型 * @param source 傳入json中的字符串 * @param beanClass 實體類的類型 * @return 實體類 */ public static Object getObjFromJsonArrStr(String source,Class beanClass) { JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(source); return JSONObject.toBean(jsonObject,beanClass); } /** * 由字符串反序列化成實體類 針對的是一個實體,此實體中的屬性包括自定義的類型,如Teacher類型,或者List<Teacher>類型 * @param jsonArrStr * @param clazz * @param classMap * @return */ public static Object getObjFromJsonArrStr(String jsonArrStr, Class clazz, Map classMap) { JSONObject jsonObj = JSONObject.fromObject(jsonArrStr); return JSONObject.toBean(jsonObj, clazz, classMap); } /** * 將string轉換成listBean * @param jsonArrStr 需要反序列化的字符串 * @param clazz 被反序列化之后的類 * @return 實體list */ @SuppressWarnings("unchecked") public static List getListFromJsonArrStr(String jsonArrStr, Class clazz) { JSONArray jsonArr = JSONArray.fromObject(jsonArrStr); List list = new ArrayList(); for (int i = 0; i < jsonArr.size(); i++) { list.add(JSONObject.toBean(jsonArr.getJSONObject(i), clazz)); } return list; } /** * 將string轉換成listBean 屬性中包含實體類等 如List<Student> 而Student中含有屬性List<Teacher> * @param jsonArrStr 需要反序列化的字符串 * @param clazz 反序列化后的類 * @param classMap 將屬性中包含的如Teacher加入到一個Map中,格式如map.put("teacher",Teacher.class) * @return 反序列化后的字符串 * 使用示例: Map classMap = new HashMap(); //必須要對Parent進行初始化 否則不識別 Teacher p = new Teacher(); classMap.put("teacher", p.getClass()); List mlist = JSONTransfer.getListFromJsonArrStr(resultStr, Student.class, classMap); */ @SuppressWarnings("unchecked") public static List getListFromJsonArrStr(String jsonArrStr, Class clazz, Map classMap) { JSONArray jsonArr = JSONArray.fromObject(jsonArrStr); List list = new ArrayList(); for (int i = 0; i < jsonArr.size(); i++) { list.add(JSONObject.toBean(jsonArr.getJSONObject(i), clazz, classMap)); } return list; } /** * 序列化操作,無論是單個的對象,還是list,抑或是list中的屬性仍包含list,都可以直接序列化成String類型 * @param obj 需要被序列化的對象 * @return 序列化之后的字符串 */ @SuppressWarnings("unchecked") public static String getJsonArrStrFromList(Object obj) { //返回結果 String jsonStr = null; //判空 if (obj == null) { return "{}"; } //Json配置 JsonConfig jsonCfg = new JsonConfig(); //注冊日期處理器 jsonCfg.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor(SystemConstants.DateFormat)); //判斷是否是list if (obj instanceof Collection || obj instanceof Object[]) { jsonStr = JSONArray.fromObject(obj, jsonCfg).toString(); } else { jsonStr = JSONObject.fromObject(obj, jsonCfg).toString(); } return jsonStr; } 關於Java序列化,ITEye上有一篇討論的帖子比較好 http://www.iteye.com/topic/14707


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM