知識點:使用java中的反射獲得object對象的屬性值
一:場景
這兩天開發代碼時,調用別人的后台接口,返回值為Object對象(json形式的),我想獲得object中指定的屬性值,沒有對應的get方法,也不像在js中用object.屬性獲得,這里可以通過反射獲得了Object對象的屬性值。
二:實例
如上我想獲得object對象的data中的一個屬性值eventId,就可以使用反射獲得data的屬性值,之后強轉類型即可。
代碼如下:
Object entitySave = subEventService.save(entity);
//反射獲取object的data屬性值(subEvent中的eventId)
String eventId = null;
Class jsonClass = entitySave.getClass();//通過entitySave的Object對象,獲取運行時類的對象
Field dataField = null;
try {
//獲取object中的data屬性
dataField = jsonClass.getDeclaredField("data");
dataField.setAccessible(true);//設置data屬性為可訪問的
SubEvent tempSubEvent= new SubEvent();
try {
//通過Field.get(Object)獲取object的data(SubEvent)中的eventId屬性
tempSubEvent = (SubEvent) dataField.get(entitySave);
eventId = tempSubEvent.getEventId();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}