`

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

    java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java ...

    vbscript Split函数用法详解(字符串转数组函数)

    VBSplit函数是Visual Basic Script (VBS)中用于将字符...总的来说,VBSplit函数是处理字符串时不可或缺的工具,能够帮助开发者有效地解析和操作文本数据。通过理解其工作原理和用法,可以编写出更灵活和高效的VBS脚本。

    PB POWERBUILDER 字符串 数组 相互 转换 转化

    |PowerBuilder 数组字符串相互转化 天津 李华锋 * ...*老字符串转数组430579 | |新字符串转数组299600 | |老数组转字符串212863 | |新数组转字符串187 * |以上是200000个数组测试结果 | |优化效率相当明显

    java字符串转数组实用代码

    java字符串转数组实用代码

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    在Java编程中,JSON...总之,Java中的Jackson库提供了一种高效且灵活的方式来解析JSON字符串,将其转换为对应的Java对象。无论是简单的键值对还是复杂的嵌套结构,Jackson都能够胜任,极大地简化了开发人员的工作。

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节;

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...

    字符串转数组字符串转数组.txt

    字符串转数组

    JAVA日期与字符串的转换

    将`java.util.Date`类型的对象转换为字符串可以通过`SimpleDateFormat`类来实现。`SimpleDateFormat`是`java.text`包中的一个子类,它可以用来格式化和解析日期。下面是一个具体的例子: ```java import java.text....

    lua切割字符串为数组(split)

    lua字符串转数组,类似js里的split()和php里的explode()

    Java中Json字符串直接转换为对象的方法(包括多层List集合)

    本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`net.sf.json.JSONObject`类来实现这一功能。 首先,确保你的项目中已经引入了必要的库。在使用`...

    java解析xml字符串

    方法接收一个XML字符串作为参数,然后按照上面的流程进行解析和操作。具体来说: - XML字符串首先被包装成`StringReader`和`InputSource`。 - `SAXBuilder`创建`Document`对象。 - 获取根元素`&lt;submittask&gt;`,并...

    asp字符串转json对象类

    2. **解析JSON对象**:逐个解析JSON字符串中的键值对,创建一个内部数据结构来存储这些键值对,如数组或自定义的Object类实例。 3. **创建访问接口**:为这个数据结构提供类似"obj("name")"的访问方法,这可能涉及...

    利用java反射将json字符串转成对象.zip

    在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...

    Java 所有字符串转UTF-8 万能工具类-GetEncode.java

    不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);

    java实现对象转化为get请求的param参数String字符串

    java实现对象转化为get请求的param参数String字符串,本人自测非常好用,一般对象可以转化键值对的格式,但是最近项目需要自己手动拼接对象作为get请求的参数,百度了一堆还不如自己写一个,欢迎各位使用,有什么...

    java字符串中${}或者{}等的占位符替换工具类

    Java字符串中${}或者{}等占位符替换工具类 Java字符串中${}或者{}等占位符替换工具类是一个功能强大且实用的工具类,它可以将Java字符串中的占位符依次替换为指定的值。该工具类的主要功能是实现占位符的替换,即将...

    js字符串转数组介绍及使用

    在JavaScript中,字符串转换为数组的操作是常见的编程需求,尤其在处理用户输入或者解析文本时。本文将深入探讨如何利用JavaScript的内置方法`split()`来实现这一目标,并通过实例演示来帮助读者理解和记忆。 `...

    java 字符串截取工具类

    java 字符串截取工具类java 字符串截取工具类

Global site tag (gtag.js) - Google Analytics