解析实体类

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;
    }

}

posted @ 2017-09-01 14:03  枫沫  阅读(384)  评论(0编辑  收藏  举报