javascript
json 反射java 实体_Java 将JSON反射到实体类
通過服務間調用拿到的數據返回的格式是JSON,如果你當前這個服務有實體數據類型可以對應上,那么就可以輕松愉快的搞定。
如果數據格式對不上,例如這個JSON里面有些數據是我們不想要的,這樣我們實體的數據類型就可能對應不上,需要通過反射的方式來轉換
/**
* Map轉成實體對象
*
* @param map map實體對象包含屬性
* @param clazz 實體對象類型
* @return T
*/
public static T map2Object(Map map, Class extends T> clazz) {
if (map == null) {
return null;
}
T obj = null;
try {
obj = clazz.newInstance();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
int mod = field.getModifiers();
if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
continue;
}
field.setAccessible(true);
field.set(obj, map.get(field.getName()));
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
代碼從別處拉過來的,但是不是很符合要求(我不想手動轉換類型),我將返回值改為泛型,java中靜態方法泛型的聲明格式為:
public static T map2Object(Map map, Class extends T> clazz) {}
當然、泛型個數可以是多個,反回值可以是其中一個已定義的泛型,例如:
public static T1 map2Object(T1 t1, T2 t2, T3 t3) {}
使用它:
// 遠程調用通過發布人id獲取用戶信息
R r = remoteMemberService.queryMemberByMemberId(publishId);
// 通過實體過濾JSON中數據
BlogMemberInfo s = BeanUtils.map2Object(r.getData(), BlogMemberInfo.class);
總結
以上是生活随笔為你收集整理的json 反射java 实体_Java 将JSON反射到实体类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7300mAh电池实测,vivoY300
- 下一篇: java 匿名函数 构造_Java匿名内