反射处理object --> List
将下方对象处理成
public class BloodFatBo {
/**
* 总胆固醇 单位:mmol/L
*/
private String totalCholesterol;
/**
* 甘油三酯 单位:mmol/L
*/
private String triglyceride;
/**
* 低密度脂蛋白 单位:mmol/L
*/
private String lowDensityLipoprotein;
/**
* 高密度脂蛋白 单位:mmol/L
*/
private String highDensityLipoprotein;
}
"bloodFatList": [
{
"code": "totalCholesterol",
"name": "总胆固醇",
"value": "4.3"
},
{
"code": "triglyceride",
"name": "甘油三酯",
"value": "1.6"
},
{
"code": "lowDensityLipoprotein",
"name": "低密度脂蛋白",
"value": "2.7"
},
{
"code": "highDensityLipoprotein",
"name": "高密度脂蛋白",
"value": "1.28"
}
],
实现方案
/**
* 反射获取code name value
*
* @param object Object
* @return List<CommonDataBo>
*/
private List<CommonDataBo> getCommonDataBoList(Object object) {
List<CommonDataBo> list = Lists.newArrayList();
for (Field field : object.getClass().getDeclaredFields()) {
try {
Method m = object.getClass()
.getMethod("get" + field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1));
CommonDataBo build = CommonDataBo.builder()
.code(field.getName())
.name(FollowUpEnum.getMessageByCode(field.getName()))
.value((String) m.invoke(object))
.build();
list.add(build);
} catch (Exception e) {
LogManager.getRuntimeLog().error("bean transfer error,{}", e);
}
}
return list;
}
@Getter
@AllArgsConstructor
public enum FollowUpEnum {
/**
* 血脂数据
*/
TOTALCHOLESTEROL("totalCholesterol", "总胆固醇"),
TRIGLYCERIDE("triglyceride", "甘油三酯"),
LOWDENSITYLIPOPROTEIN("lowDensityLipoprotein", "低密度脂蛋白"),
HIGHDENSITYLIPOPROTEIN("highDensityLipoprotein", "高密度脂蛋白"),
/**
* 尿常规数据
*/
WHITEBLOODCELL("whiteBloodCell", "白细胞"),
NITRITE("nitrite", "亚硝酸盐"),
UROBILINOGEN("urobilinogen", "尿胆原"),
PROTEIN("protein", "蛋白质"),
OCCULTBLOOD("occultBlood", "潜血"),
KETONEBODY("ketoneBody", "酮体"),
BILIRUBIN("bilirubin", "胆红素"),
GLUCOSE("glucose", "葡萄糖"),
VIC("vic", "维生素C"),
MICROALBUMIN("microalbumin", "微量白蛋白"),
CREATININE("creatinine", "肌酐"),
CALCIUMION("calciumIon", "钙离子"),
ALBUMINCREATININERATE("albuminCreatinineRate", "微量白蛋白/肌酐"),
PH("ph", "ph值"),
URINALYSISRATE("urinalysisRate", "尿常规比重"),
;
private String code;
private String message;
public static String getMessageByCode(String code) {
for (FollowUpEnum value : FollowUpEnum.values()) {
if (StringUtils.equals(code, value.code)) {
return value.message;
}
}
return null;
}
}