package com.fastech.monitor_ui.util;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ParseClassModel {
//static Logger logger = LoggerFactory.getLogger(this.getClass());
public static <T> T parse(Class<T> classname,Map<String,Object> alarmMap){
List<String> keyList = new ArrayList<String>();
Set<String> keySet = alarmMap.keySet();
T obj = null;
try {
obj=classname.newInstance();
} catch (InstantiationException | IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}//实例化对象
keyList = new ArrayList<>(keySet);
for(int i = 0;i<keyList.size();i++){
String key = keyList.get(i);
String value = (String) alarmMap.get(key);
try{
Field field= classname.getDeclaredField(key);//获取字段
String type = field.getGenericType().toString();
if (type.equals("class java.lang.String")){
field.setAccessible(true);
if(value!=null){
value = value.replaceAll("\r|\n", "");
}
field.set(obj, value);//为字段赋值
}else if(type.equals("int")){
if(value == null||value.trim().length()==0){
value = "0";
}
field.setAccessible(true);
field.set(obj, Integer.valueOf(value.trim()));//为字段赋值
}else if(type.equals("long")){
if(value == null||value.trim().length()==0){
value = "0";
}
field.setAccessible(true);
field.set(obj, Long.valueOf(value.trim()));//为字段赋值
}else if("double".equals(type)){
if(value == null||value.trim().length()==0){
value = "0";
}
field.setAccessible(true);
field.set(obj, Double.parseDouble(value.trim()));//为字段赋值
}else if(type.equals("class java.util.Date")){
Date date = new Date();
if(value==null||value.trim().length()==0){
date = null;
}else{
value = value.replaceAll("\n","");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
date = sdf.parse(value.trim());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
field.setAccessible(true);
field.set(obj, date);//为字段赋值
}
}catch(Exception e){
e.printStackTrace();
// logger.error("key ---"+key+" value ---"+value);
}
}
return obj;
}
}
转载于:https://www.cnblogs.com/fengmo2427/p/7462936.html