日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSON字符串转为指定实体类对象

發布時間:2024/9/19 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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字符串转为指定实体类对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。