如果传递过来的数据是list的object对象,那可以用如下方法获取
Object obj = userServer.getUserRoleById(sysUser.getId()).getData();
List<String> list = new ArrayList<>();
if (obj instanceof ArrayList<?>) {
for (Object o : (List<?>) obj) {
list.add(String.class.cast(o.toString()));
}
}
return list;
就可以获取到list<String>
的roleIdList
这个没有反射下面才是
如果传递过来的是单个sysuser的object对象,那可以用如下方式获取
Object obj = userServer.getUserById(id);
Class jsonClass = obj.getClass();
Field dataField = null;
SysUser sysUser= new SysUser();
LinkedHashMap linkedHashMap = new LinkedHashMap();
try {
//获取object中的data属性
dataField = jsonClass.getDeclaredField("data");
dataField.setAccessible(true);//设置data属性为可访问的
try {
linkedHashMap = (LinkedHashMap) dataField.get(obj);
Number userId = (Number) linkedHashMap.get("id");
sysUser.setId(userId.longValue());
sysUser.setAccount((String) linkedHashMap.get("account"));
sysUser.setUsername((String) linkedHashMap.get("name"));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return sysUser;
就获取到了单个对象的数据
如果传递过来的是多个sysuser的list<sysUser>
的object对象,就可以用如下方法
Object obj = userServer.getUserListByIds(idList);
List<SysUser> list = new ArrayList<>();
Field dataField = null;
LinkedHashMap linkedHashMap = new LinkedHashMap();
try{
Class jsonClass = obj.getClass();
dataField = jsonClass.getDeclaredField("data");
dataField.setAccessible(true);//设置data属性为可访问的
List<LinkedHashMap> linkedHashMapList = (List<LinkedHashMap>) dataField.get(obj);
for (LinkedHashMap hashMap : linkedHashMapList) {
SysUser sysUser = new SysUser();
sysUser.setId(Long.parseLong(hashMap.get("id").toString()));
sysUser.setAccount(hashMap.get("account").toString());
sysUser.setUsername(hashMap.get("name").toString());
list.add(sysUser);
}
}catch (Exception e){
e.printStackTrace();
}
return list;
就获取到了List<SysUser>
的list对象