物件通過反射轉為Map(物件中有多個物件)
private static final String JAVAP = "java."; private static final String JAVADATESTR = "java.util.Date"; /** * 利用遞迴呼叫將Object中的值全部進行獲取 * * @param timeFormatStr 格式化時間字串預設<strong>2017-03-10 10:21</strong> * @param c 物件 * @return * @throws IllegalAccessException */ public static Map<String, String> objectToMapString(String timeFormatStr, Class<?> c, Object o) throws IllegalAccessException { Map<String, String> map = new HashMap<>(); objectTransfer(timeFormatStr, c, o, map); return map; } /** * 遞迴呼叫函式 * * @param timeFormatStr 時間格式 * @param c 父類 * @param o key(父物件) * @param map 返回的map * @return * @throws IllegalAccessException */ private static Map<String, String> objectTransfer(String timeFormatStr, Class<?> c, Object o, Map<String, String> map) throws IllegalAccessException { boolean isExclude = false; //預設字串 String formatStr = "YYYY-MM-dd HH:mm:ss"; //設定格式化字串 if (timeFormatStr != null && !timeFormatStr.isEmpty()) { formatStr = timeFormatStr; } List<Field[]> flist = new ArrayList<>(); flist.add(c.getDeclaredFields()); flist.add(c.getSuperclass().getDeclaredFields()); for (int i = 0; i < flist.size(); i++) { for (Field field : flist.get(i)) { field.setAccessible(true); String fieldName = field.getName(); Object value = null; value = field.get(o); if (value != null) { Class<?> valueClass = value.getClass(); if (valueClass.isPrimitive()) { map.put(fieldName, value.toString()); } else if (valueClass.getName().contains(JAVAP)) {//判斷是不是基本型別 if (valueClass.getName().equals(JAVADATESTR)) { //格式化Date型別 SimpleDateFormat sdf = new SimpleDateFormat(formatStr); Date date = (Date) value; String dataStr = sdf.format(date); map.put(fieldName, dataStr); } else { map.put(fieldName, value.toString()); } } else { //遞迴子物件 valueClass 子物件的class ,value 子物件 objectTransfer(timeFormatStr, valueClass, value, map); } } } } return map; }
正在研究怎麼將Map賦值到物件中(物件中有多個子物件),糾結(ー`´ー)
相關推薦
物件通過反射轉為Map(物件中有多個物件)
private static final String JAVAP = "java."; private static final String JAVADATESTR = "java.util.Date"; /** * 利用遞迴呼叫將Ob
陣列中有多條物件去重方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JQ去重</title> </head> <body> &l
建立一個數組,陣列中有三個物件
json.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>建立一個json格式陣列,
Java迴圈中建立多個物件是幾個引用?以及是否執行緒安全
在迴圈中,通過User user = new User();這種方式建立的物件。每次建立的物件是不同的,但是引用是同一個,引用的生命週期是單次迴圈,下次迴圈會覆蓋調上次的引用。 比如這段程式碼: int minId = 0; while (
form表單中有多個提交或者通過按鈕來提交時的跳轉方法
<form id="myForm"> <input id="btnId" value="提交" type="button"> </form> form表單一般是通過submit提交的,按鈕無法正常提交表單資料,就需要引用js函式來提交
當xlsx中有多個sheet,讀取其中一個sheet
以下讀取方法主要是自己認為比較簡單的方式 如果知道sheet_name,直接 import pandas as pd pd.read_excel(data_file,sheet_name) 獲取sheet_names的方法 import openpyxl wb = openpyxl.
請教C#對於介面中有多個複選框時如何處理的問題
// 指數 -- 當對陣列按各位進行排序時,exp=1;按十位進行排序時,exp=10;... int exp; // 陣列a中的最大值 int max = getMax(arr); // 從個位開始,對陣列a按"指數"進行排序 for (exp = 1;
解決html標籤中有多個空格
設計圖如下: 想著用如下程式碼: <div>引數 產地 功效</div> 雖然中間加了很多空格,但是實際效果就一個空格,想著有沒有空格標籤呢,最後發現只能用標籤符:“ ” 代表空格的轉意字元,如果有多
fragment中巢狀viewpager,vierpager中有多個fragment,不顯示 ...
現在好多應用流行一種佈局。底部幾個工具欄選項,上面也有類似tab的選項。 底部用RadioGroup控制fragment的切換。以上有五個fragment。 第一個fragment,代表著首頁。首頁又是一個類似tab的fragment,使用viewpager切換著兩
fragment中巢狀viewpager,viewpager中有多個fragment,裡面fragment沒有顯示
fragment巢狀fragment導致裡面fragment介面沒有顯示,例子如下: private void InitViewPager(View parentView) { mPag
fragment中巢狀viewpager,vierpager中有多個fragment,不顯示而且滑動卡頓
現在好多應用流行一種佈局。底部幾個工具欄選項,上面也有類似tab的選項。 底部用RadioGroup控制fragment的切換。以上有五個fragment。 第一個fragment,代表著首頁。首頁又是一個類似tab的fragment,使用viewpager切換著兩個fragment。 priv
ListView中有多個Item(Item中是edittext或則其他需要焦點的控制元件丟失焦點的問題)
ListView中有多個Item,Item中是edittext或則其他需要焦點的控制元件丟失焦點的問題. 發生這個的原因是因為,當點選item中的edittext的時候,軟鍵盤彈出來的時候,如果軟鍵盤會覆蓋到Item佈局,那麼就會造成ListView將會發生
edittext常用總結;介面中有多個edittext,如何讓預設第二個獲取焦點
一個介面中多個edittext,預設第二個獲取焦點(第三個、第四個同理,其他view也同理) (1)預設第一個獲取鍵盤焦點,因此需要將第一個edittext設定為focusableInTo
函式中有多個return?C語言中,一個函式可以有幾個返回值?
在移植wifi的程式碼時,遇到了一些與下面類似的函式,這些函式中有不只一個return,這可是個新鮮的玩意兒: int func (int b) { int a=5; if (a>b) return a; else
JDBC通過反射機制批量的把List裡面的物件新增到資料庫中
1. 通過傳遞BOList,表名,sequence,還有一個表字段的陣列為引數,來完成資料的批量刪除 String[] columnNames = {"BIZ_CODE_ID","CODE_TYPE","CODE_NUM","CODE_VALUE",
通過JDBC向oracle資料庫中插入Clob大物件
好記性不如爛筆頭,今天剛剛學過Clob的插入和查詢,寫篇部落格,以備後用 首先建立一個包含大物件的表 create table data( id varchar2(20), content clob ); 然後通過JDBC連線資料庫並插入Clob
Java通過反射機制使用非預設構造器建立物件
1、Class類方法:getConstructors() 在JDK文件中,對於該方法有如下解釋: Returns an array containing Constructor objects re
TreeSet方法之一 當向TreeSet中新增Person物件 續 當有多個屬性值時的自然排序
package andycpp; public class Person implements Comparable { private String name; private Integer age; //get set 方法 public String ge
java 通過反射和自定義泛型來修改物件
public static <T> T Update(T beforeUpdate,T update){ try { if(beforeUpdate==null) return update; if(update==nul