Java中的JSON序列化和反序列化 和Vo的轉換
阿新 • • 發佈:2019-01-28
- /**
- * 由字串反序列化成實體類 針對的是一個實體,此實體中的屬性不包括自定義的型別,如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
- 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;
- }