java 参数解析工具,参数解析工具种 字符串转数组、转对象,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 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 MAP键值对

*/

private static Map stringToMap(String srcStr) {

Map valuesMap = new HashMap();

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());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值