参数解析工具类 字符串转数组、转对象,java

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

import com.howbuy.common.utils.StringUtil;

/**
 * @ClassName: ParameterParseUtil
 * @Description: 参数解析工具类
 * @date 2013-4-25 上午11:09:31
 *
 */
public class ParameterParseUtil {
    /**
     * 将字符串转换成对象
     * @param clazz 对象类型
     * @param srcStr 源字符串
     * @return Object 返回对象
     */
    public static Object stringToObject(Class clazz, String srcStr) {
        if(null == clazz || StringUtil.isEmpty(srcStr)) {
            return null;
        }
       
        try {
            return fillObjectValue(clazz.newInstance(), srcStr);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
       
        return null;
    }
   
    /**
     * 根据源字符串解析并将值填充对象
     * @param obj 返回对象
     * @param srcStr 源字符串
     * @return Object 返回对象
     */
    public static Object fillObjectValue(Object obj, String srcStr) {
        if(null == obj || StringUtil.isEmpty(srcStr)) {
            return null;
        }
       
        try {
            Map<String, String> map = stringToMap(srcStr);
            Field []fields = obj.getClass().getDeclaredFields();
            for(Field field : fields) {
                String fieldName = field.getName();
                if("serialVersionUID".equals(fieldName)) {// 过滤掉序列化字段
                    continue;
                }
                String value = map.get(fieldName);
                Method method = obj.getClass().getMethod("set" + convertFieldName(fieldName), String.class);
                method.invoke(obj, value);
            }
        } catch(Exception ex) {
            ex.printStackTrace();
        }
       
        return obj;
    }
   
    /**
     * 将源字符串解析成MAP键值对
     * @param srcStr 源字符串
     * @return Map<String,String> MAP键值对
     */
    private static Map<String, String> stringToMap(String srcStr) {
        Map<String, String> valuesMap = new HashMap<String, String>();
        if(StringUtil.isEmpty(srcStr)) {
            return valuesMap;
        }
       
        String []srcStrArr = srcStr.split("\\|");
        for(String str : srcStrArr) {
            String []strArr = str.split("=");
            String key = strArr[0];
            String value = "";
            if(strArr.length > 1) {
                value = strArr[1];
            }
            valuesMap.put(key, value);
        }
       
        return valuesMap;
    }
   
    /**
     * 将字段名称首字母转换成大写后返回
     * @param fieldName 字段名称
     * @return String
     */
    private static String convertFieldName(String fieldName) {
        if(StringUtil.isEmpty(fieldName)) {
            return "";
        }
        return fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1, fieldName.length());
    }
}

你可能感兴趣的:(java)