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());
}
}
- 浏览: 269272 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (187)
- spring (10)
- jquery (14)
- js (18)
- java (44)
- freemarker (7)
- 框架介绍 (1)
- tomcat (4)
- oracle (7)
- 喜欢的诗文 (4)
- linux (19)
- nokia (1)
- 那些事 (1)
- apache (3)
- dom4j (1)
- SOA (1)
- 企业架构 (2)
- baidu (1)
- svn (1)
- 测试 (4)
- liunx (0)
- memcahce (1)
- mysql (25)
- maven (4)
- 推广 (1)
- 网络 (1)
- vpn (1)
- drools (1)
- mongodb (1)
- redis (3)
- xlightweb (1)
- wifi (1)
- 学习资料 (1)
- git (1)
- 系统设计 (1)
- springboot (1)
- 自考 (0)
最新评论
-
zuo_qin_bo:
if(df==null){ //这个地方并发多的情况 ...
ThreadLocal解决dateFormat多线程错误 -
kongnan93:
好文!赞一个!!!!
jquery blockUI 居中显示 -
cxc_110928:
如果加上不能出现连续的数字或者字母 如 1234 abcd ...
用java 匹配一个数字和字母密码的正则表达式 -
wzwahl36:
http://www.atool.org/json2javab ...
JSON和JAVA的POJO的相互转换
发表评论
-
折半查找法
2019-06-17 18:11 398public static void main(String[ ... -
js 加密 java解密
2017-12-05 16:27 911https://github.com/noisyle/cr ... -
java工程师成长之路
2017-03-04 17:43 595一、基础篇 1.1 JVM 1.1.1. J ... -
java 启动jar
2017-03-04 15:40 1666#!/bin/sh PRG="$0&qu ... -
ThreadLocal解决dateFormat多线程错误
2016-09-19 17:44 2178出处 http://www.blogjava.net/ki ... -
设计模式
2016-06-02 17:11 514http://www.cnblogs.com/xing9010 ... -
list分页
2016-05-11 09:56 411//分批保存数据 if(null!=aassetO ... -
根据输入执行代码块
2015-05-11 17:25 699/** * f-road.com Inc. * Copyrig ... -
java装饰器模式
2015-03-17 18:00 867java装饰器模式 意图:动态的将责任附加到对象上什么 ... -
java适配器模式
2015-03-17 17:54 653定义:属于结构型模式,其主要作用是将一个类的接口转换成客户 ... -
Java垃圾回收机制
2015-02-04 09:43 749垃圾收集GC(Garbage Coll ... -
jvisualvm结合jstatd进行远程监控
2015-01-27 16:17 863jvisualvm是Jdk自带的,具体点,据说是jdk1 ... -
最佳线程数总结
2015-01-26 11:53 0最佳线程数: 性能压 ... -
线程dump
2015-01-26 11:19 0Java 的线程 线程是指 ... -
几种阻塞队列
2015-01-26 11:11 0转自:http://blog.csdn.net/yydcj/ ... -
线程池的原理及实现
2015-01-26 10:53 7131、线程池简介: ... -
线程同步通信技术-wait notify 用法
2014-10-22 20:58 712/** * * <pre> * 子线程 ... -
Cisco VPN Client 442
2014-10-18 21:17 162典型的Cisco VPN Client 442 错误,之前的 ... -
JDK安装
2014-10-18 15:15 758学习Java 开发的第一步就是构建开发环境,JDK(Java ... -
MultiThreadHttpClient
2014-09-15 17:05 460package com.froad.points.bankse ...
相关推荐
java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java ...
VBSplit函数是Visual Basic Script (VBS)中用于将字符...总的来说,VBSplit函数是处理字符串时不可或缺的工具,能够帮助开发者有效地解析和操作文本数据。通过理解其工作原理和用法,可以编写出更灵活和高效的VBS脚本。
|PowerBuilder 数组字符串相互转化 天津 李华锋 * ...*老字符串转数组430579 | |新字符串转数组299600 | |老数组转字符串212863 | |新数组转字符串187 * |以上是200000个数组测试结果 | |优化效率相当明显
java字符串转数组实用代码
在Java编程中,JSON...总之,Java中的Jackson库提供了一种高效且灵活的方式来解析JSON字符串,将其转换为对应的Java对象。无论是简单的键值对还是复杂的嵌套结构,Jackson都能够胜任,极大地简化了开发人员的工作。
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
字符串转数组
将`java.util.Date`类型的对象转换为字符串可以通过`SimpleDateFormat`类来实现。`SimpleDateFormat`是`java.text`包中的一个子类,它可以用来格式化和解析日期。下面是一个具体的例子: ```java import java.text....
lua字符串转数组,类似js里的split()和php里的explode()
本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`net.sf.json.JSONObject`类来实现这一功能。 首先,确保你的项目中已经引入了必要的库。在使用`...
方法接收一个XML字符串作为参数,然后按照上面的流程进行解析和操作。具体来说: - XML字符串首先被包装成`StringReader`和`InputSource`。 - `SAXBuilder`创建`Document`对象。 - 获取根元素`<submittask>`,并...
2. **解析JSON对象**:逐个解析JSON字符串中的键值对,创建一个内部数据结构来存储这些键值对,如数组或自定义的Object类实例。 3. **创建访问接口**:为这个数据结构提供类似"obj("name")"的访问方法,这可能涉及...
在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);
java实现对象转化为get请求的param参数String字符串,本人自测非常好用,一般对象可以转化键值对的格式,但是最近项目需要自己手动拼接对象作为get请求的参数,百度了一堆还不如自己写一个,欢迎各位使用,有什么...
Java字符串中${}或者{}等占位符替换工具类 Java字符串中${}或者{}等占位符替换工具类是一个功能强大且实用的工具类,它可以将Java字符串中的占位符依次替换为指定的值。该工具类的主要功能是实现占位符的替换,即将...
在JavaScript中,字符串转换为数组的操作是常见的编程需求,尤其在处理用户输入或者解析文本时。本文将深入探讨如何利用JavaScript的内置方法`split()`来实现这一目标,并通过实例演示来帮助读者理解和记忆。 `...
java 字符串截取工具类java 字符串截取工具类