當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JSON字符串转为指定实体类对象
生活随笔
收集整理的這篇文章主要介紹了
JSON字符串转为指定实体类对象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建JsonStringToClass對象即可
package utils;import net.sf.json.JSONArray; import net.sf.json.JSONObject;import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.text.SimpleDateFormat; import java.util.*;public class JsonStringToClass<T> {//把json字符串轉為map類型public static Map<String,Object> ToMapOne(String obj){Map<String,Object> map=null;if(obj!=null&&obj.length()>0){map = new HashMap<String,Object>();JSONObject jsonOne = JSONObject.fromObject(obj);Set<String> keys=jsonOne.keySet();for(String key:keys){map.put(key,jsonOne.get(key).toString());}}return map;}//把json數組字符串轉為map類型public static Map<String,Object> ToMap(String obj){Map<String,Object> map=null;if(obj!=null&&obj.length()>0&&obj.indexOf("[")==0){JSONArray json=JSONArray.fromObject(obj);JSONObject jsonOne;for(int i=0;i<json.size();i++){map = new HashMap<String,Object>();jsonOne = json.getJSONObject(i);Set<String> keys=jsonOne.keySet();for(String key:keys){map.put(key,jsonOne.get(key).toString());}}}return map;}//把json字符串轉為多個或一個map對象public static List<Map<String,Object>> StringToListMap(String obj){List<Map<String,Object>> list=null;if(obj!=null&&obj.length()>0&&obj.indexOf("[")==0) {list = new ArrayList<>();JSONArray json = JSONArray.fromObject(obj);JSONObject jsonOne;for (int i = 0; i < json.size(); i++) {Map<String, Object> map = new HashMap<String, Object>();jsonOne = json.getJSONObject(i);Set<String> keys = jsonOne.keySet();for (String key : keys) {map.put(key, jsonOne.get(key));}list.add(map);}}return list;}//把map轉為指定類型public static <T> T MapToClass(Map<String, Object> map, Class<T> clazz) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");if (map == null) {return null;}T obj = null;try {// 使用newInstance來創建對象obj = clazz.newInstance();// 獲取類中的所有字段Field[] fields = obj.getClass().getDeclaredFields();for (Field field : fields) {int mod = field.getModifiers();// 判斷是擁有某個修飾符if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {continue;}// 當字段使用private修飾時,需要加上field.setAccessible(true);// 獲取參數類型名字String filedTypeName = field.getType().getName();// 判斷是否為時間類型,使用equalsIgnoreCase比較字符串,不區分大小寫// 給obj的屬性賦值//System.err.println(filedTypeName);String datetimestamp = map.get(field.getName())+"";if (filedTypeName.equalsIgnoreCase("java.util.date")) {if (datetimestamp.equalsIgnoreCase("null")) {field.set(obj, null);} else {if(datetimestamp.length()<=10){SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");field.set(obj, sf.parse(datetimestamp));}else{field.set(obj, sdf.parse(datetimestamp));}}continue;}if(filedTypeName.equalsIgnoreCase("java.lang.String")){if (datetimestamp.equalsIgnoreCase("null")) {field.set(obj, null);} else {field.set(obj, datetimestamp);}continue;}if(filedTypeName.equalsIgnoreCase("java.lang.Integer")){if (datetimestamp.equalsIgnoreCase("null")) {field.set(obj, null);}else{field.set(obj, new Integer(datetimestamp));}continue;}if(filedTypeName.equalsIgnoreCase("java.lang.Double")){if (datetimestamp.equalsIgnoreCase("null")) {field.set(obj, null);}else {field.set(obj, new Double(datetimestamp));}continue;}if(filedTypeName.equalsIgnoreCase("java.lang.Boolean")){if (datetimestamp.equalsIgnoreCase("null")) {field.set(obj, null);}else {field.set(obj, new Boolean(datetimestamp));}continue;}field.set(obj, map.get(field.getName()));}} catch (Exception e) {e.printStackTrace();}return obj;}//把list集合map轉為指定類型listpublic List<T> ListMapToList(List<Map<String, Object>> listmap, Class<T> clazz){List<T> list=new ArrayList<>();for(Map<String,Object> map:listmap){T bean=JsonStringToClass.MapToClass(map,clazz);list.add(bean);}return list;}//把json字符串轉為指定類型list或實體類public <D> D StringJSONToList(String mql,Class<T> clazz){D bean=null;if(mql!=null&&mql.length()>0&&mql.indexOf("[")!=0){Map<String,Object> map=JsonStringToClass.ToMapOne(mql);if(map!=null&&map.size()>0){bean=(D)JsonStringToClass.MapToClass(map,clazz);}}else if(mql!=null&&mql.length()>0&&mql.indexOf("[")==0){List<Map<String,Object>> map=JsonStringToClass.StringToListMap(mql);if(map!=null&&map.size()>0){bean= (D) new JsonStringToClass().ListMapToList(map,clazz);}}return bean;} }實現方法
//這里轉換可以直接轉為list類型實體類對象 a=(實體類對象)new JsonStringToClass().StringJSONToList(json字符串,實體類對象.class);//這里轉換可以直接轉為list類型實體類對象 a=(實體類對象)new JsonStringToClass().StringJSONToList(json字符串,實體類對象.class);總結
以上是生活随笔為你收集整理的JSON字符串转为指定实体类对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耗时 21 小时,美国医生完成全球首例全
- 下一篇: 洛图科技:第三季度中国 VR / AR