public class MapToBeanUtils {
private static final Logger logger = LoggerFactory.getLogger(MapToBeanUtils.class);
/**
* 将javabean实体类转为SortedMap类型,过滤属性值为null和空的
* 然后返回一个SortedMap类型的值
*
* @param obj
* @return
*/
public static SortedMap<String, Object> beanToSortedMap(Object obj) {
SortedMap<String, Object> params = new TreeMap<String, Object>();
try {
PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean();
PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(obj);
for (int i = 0; i < descriptors.length; i++) {
String name = descriptors[i].getName();
if (!"class".equals(name)) {
Object value =propertyUtilsBean.getNestedProperty(obj, name);
if(StringUtils.isEmpty(value)){
continue;
}
params.put(name, value);
}
}
} catch (Exception e) {
logger.error("javabean实体类转为SortedMap类型异常!",e);
e.printStackTrace();
}
return params;
}
/**
* javabean实体类转 Map对象
* @param obj
* @return
*/
public static Map<String, Object> beanToMap(Object obj) {
Map<String, Object> params = new HashMap<String, Object>();
try {
PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean();
PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(obj);
for (int i = 0; i < descriptors.length; i++) {
String name = descriptors[i].getName();
if (!"class".equals(name)) {
params.put(name, propertyUtilsBean.getNestedProperty(obj, name));
}
}
} catch (Exception e) {
logger.error("java bean 转 map 异常!",e);
e.printStackTrace();
}
return params;
}
/**
* Map 转 javabean
* @param type
* @param map
* @return
*/
public static final Object toBean(Class<?> type, Map<String, ? extends Object> map){
try {
BeanInfo beanInfo = Introspector.getBeanInfo(type);
Object obj = type.newInstance();
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (map.containsKey(propertyName)) {
Object value = map.get(propertyName);
Object[] args = new Object[1];
args[0] = value;
descriptor.getWriteMethod().invoke(obj, args);
}
}
return obj;
}catch (Exception e){
logger.error("map 转 java bean异常!",e);
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
MapToBeanUtils mapUtils = new MapToBeanUtils();
MapToBeanUtils.Test wxapuor =mapUtils.new Test();
wxapuor.setAppid("123456789");
wxapuor.setMchId("00000000");
wxapuor.setTradeType("APP");
wxapuor.setNonceStr(RandomUtils.getNonceStr(null));
wxapuor.setSign("");
SortedMap map= MapToBeanUtils.beanToSortedMap(wxapuor);
Set es = map.entrySet();
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
String v = (String)entry.getValue();
System.out.println("key:"+k+" value:"+v);
}
XStream xStream = new XStream();
xStream.autodetectAnnotations(true);
String xml = xStream.toXML(wxapuor);
System.out.println("xml:==="+xml);
String sml="<xml>\n" +
" <appid><![CDATA[123456789]]></appid>\n" +
" <mch_id><![CDATA[00000000]]></mch_id>\n" +
" <nonce_str><![CDATA[DF334B223E699294764C2BB7AE40D8DB]]></nonce_str>\n" +
" <sign><![CDATA[]]></sign>\n" +
" <trade_type><![CDATA[APP]]></trade_type>\n" +
"</xml>";
XStream xStream1 = new XStream();
xStream1.processAnnotations(MapToBeanUtils.Test.class);
xStream1.alias("xml", MapToBeanUtils.Test.class);
MapToBeanUtils.Test wxapuors = (MapToBeanUtils.Test)xStream1.fromXML(sml);
System.out.println(wxapuors.getAppid()+"=="+wxapuors.getErrCode());
}
@XStreamAlias("xml")
public class Test{
/**
*返回状态码
*/
@XStreamAlias("return_code")
private String returnCode;
/**
* 返回信息:如非空,为错误原因
*/
@XStreamAlias("return_msg")
private String returnMsg;
/**
* 应用APPID
*/
@XStreamAlias("appid")
private String appid;
/**
* 商户号
*/
@XStreamAlias("mch_id")
private String mchId;
/**
*设备号
*/
@XStreamAlias("device_info")
private String deviceInfo;
/**
* 随机字符串
*/
@XStreamAlias("nonce_str")
private String nonceStr;
/**
* 签名
*/
@XStreamAlias("sign")
private String sign;
/**
* 业务结果
*/
@XStreamAlias("result_code")
private String resultCode;
/**
* 错误代码
*/
@XStreamAlias("err_code")
private String errCode;
/**
* 错误代码描述
*/
@XStreamAlias("err_code_des")
private String errCodeDes;
/**
* 交易类型
*/
@XStreamAlias("trade_type")
private String tradeType;
/**
* 预支付交易会话标识
*/
@XStreamAlias("prepay_id")
private String prepayId;
public String getReturnCode() {
return returnCode;
}
public void setReturnCode(String returnCode) {
this.returnCode = returnCode;
}
public String getReturnMsg() {
return returnMsg;
}
public void setReturnMsg(String returnMsg) {
this.returnMsg = returnMsg;
}
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public String getMchId() {
return mchId;
}
public void setMchId(String mchId) {
this.mchId = mchId;
}
public String getDeviceInfo() {
return deviceInfo;
}
public void setDeviceInfo(String deviceInfo) {
this.deviceInfo = deviceInfo;
}
public String getNonceStr() {
return nonceStr;
}
public void setNonceStr(String nonceStr) {
this.nonceStr = nonceStr;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public String getResultCode() {
return resultCode;
}
public void setResultCode(String resultCode) {
this.resultCode = resultCode;
}
public String getErrCode() {
return errCode;
}
public void setErrCode(String errCode) {
this.errCode = errCode;
}
public String getErrCodeDes() {
return errCodeDes;
}
public void setErrCodeDes(String errCodeDes) {
this.errCodeDes = errCodeDes;
}
public String getTradeType() {
return tradeType;
}
public void setTradeType(String tradeType) {
this.tradeType = tradeType;
}
public String getPrepayId() {
return prepayId;
}
public void setPrepayId(String prepayId) {
this.prepayId = prepayId;
}
@Override
public String toString() {
return "WxAppPayUnifiedOrderRes{" +
"returnCode='" + returnCode + '\'' +
", returnMsg='" + returnMsg + '\'' +
", appid='" + appid + '\'' +
", mchId='" + mchId + '\'' +
", deviceInfo='" + deviceInfo + '\'' +
", nonceStr='" + nonceStr + '\'' +
", sign='" + sign + '\'' +
", resultCode='" + resultCode + '\'' +
", errCode='" + errCode + '\'' +
", errCodeDes='" + errCodeDes + '\'' +
", tradeType='" + tradeType + '\'' +
", prepayId='" + prepayId + '\'' +
'}';
}
}
}
分享到:
相关推荐
将list<Map>转换成JavaBean的工具类
使用Java反射机制,将给定的javaBean转化为Map数类型,以及将Map类型的数据转化为JavaBean
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List<Map, Object>>转化为...
Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;
Javabean和map相互转化方法代码示例 在 Java 开发中,经常需要将 JavaBean 对象和 Map 对象相互转换。例如,在导入数据时,可能需要将 Map 对象转换为 JavaBean 对象,以便更方便地处理数据。本文将介绍 JavaBean ...
将一个 Map对象转化为JavaBean的形式返回,抛弃一些出现异常的问题与方法,遵循Java开发规范
例如,使用Apache Commons BeanUtils库,你可以轻松地将JavaBean对象转化为JSON字符串,如下所示: ```java import org.apache.commons.beanutils.BeanUtils; import org.json.JSONObject; public class Json...
在Java编程中,将数据结构转化为JSON格式是常见的需求,特别是在网络通信和数据存储中。GSON库由Google提供,它允许我们方便地在Java对象和JSON格式之间进行转换。本示例主要介绍如何利用GSON库将Java中的Map对象...
当我们遇到"sqoop-javabean-sqoop脚本分隔符失效问题"时,这通常意味着在使用Sqoop将数据库表数据导出到Hadoop HDFS或转化为Java Beans的过程中,预设的字段分隔符没有按照预期工作。 首先,让我们了解Sqoop的工作...
在描述中提到的“json转化JavaBean对象封装键值对参数”,意味着我们将讨论如何使用BeanUtils来处理JSON数据与JavaBean之间的相互转换。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web...
`json-lib`还提供了XML与JSON的互转功能,这对于需要在两者间切换的场景非常有用。 总结来说,`json-lib`是一个强大且易用的工具,它使得在Java中处理JSON变得简单。通过其提供的API,我们可以方便地进行JSON字符...
它接收一个JavaBean对象和一个Map,其中Map的键是属性名,值是对应的属性值。BeanUtils会遍历Map,将每个键值对中的值设为JavaBean对应属性的值,这里自动处理了类型的转换。 2. `setProperty(Object bean, String ...
`json-lib`可以将Java对象(如MAP、BEAN、LIST等)转化为JSON字符串,反之亦可,使得JSON数据能方便地在Java应用中使用。`json-lib`还支持多种数据结构,如Array、HashMap、ArrayList、LinkedList等,并且可以与...
- **功能**:它提供了将JavaBean集合转化为其他集合类型的方法,例如将Bean列表转化为Map,或者将Bean集合的属性值提取出来形成新的集合。 - **应用场景**:当需要基于JavaBean的属性进行集合操作时,如根据某个...
`json-lib`是一个Java语言实现的JSON库,它提供了多种数据类型到JSON的转换,包括JavaBean、Map、List、数组等。`json-lib-2.4-jdk15.jar`是这个库的一个版本,兼容JDK15。它提供了许多功能,例如将Java对象转化为...
这个工具类覆盖了基本类型、数组、集合(List、Set)、Map以及JavaBean对象的转换。 1. **基本类型转换**: 类似于`Integer`、`Float`、`Boolean`等基本类型的对象,可以直接将其值包裹在双引号中,形成JSON的字符...
这一特性对于将XML数据转化为易于操作的对象非常有用。例如,XML文件中的一个`<employee>`节点可能对应于一个`Employee` JavaBean对象,其中节点的属性如`id`、`name`和`position`会映射到`Employee`类的相应字段。 ...
它支持各种 JDK 类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等。FastJSON 支持循环引用,无依赖,不需要额外的 JAR,能够直接跑在 JDK 上。 FastJSON 的支持范围广泛,支持 JDK 5、JDK 6、Android...
随机数计算两个时间之间时间差返回Map集合UUID(不带“-”的)生成订单编号去除指定字符一个参数的非空验证多个参数非空验证将Javabean,Json,转换为Map将JavaBean转换成JSONObject(通过Map中转)将Map转换成...
FastJSON 支持各种 JDK 类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等。 FastJSON 支持循环引用,无依赖,不需要额外的 JAR,能够直接跑在 JDK 上。 FastJSON 支持范围广,支持 JDK 5、JDK 6、...