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
Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List<Map, Object>>转化为...
主要介绍了Javabean和map相互转化方法示例,介绍了其通用方法代码,需要的朋友可以参考下。
将一个 Map对象转化为JavaBean的形式返回,抛弃一些出现异常的问题与方法,遵循Java开发规范
随机数计算两个时间之间时间差返回Map集合UUID(不带“-”的)生成订单编号去除指定字符一个参数的非空验证多个参数非空验证将Javabean,Json,转换为Map将JavaBean转换成JSONObject(通过Map中转)将Map转换成...
Apache Cxf WebService整合Spring 处理Map、非javabean式的复合类等CXF无法自动转化的类型 CXF为服务器端和客户端添加自定义拦截器进行权限检查验证并且控制台打印日志
将页面传送过来的存储在request中变量,通过beanManage类转化为指定的javabean,用java反射实现
转化javabeans,map,collections,jsonarray,xml成为json数据 2.转化json格式数据成为javabean对象 2.commons-beanutils-1.7.0.jar 3.commons-collections-3.2.jar 4.commons-lang-2.3.jar 5.commons-logging-...
77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何进行版本控制? 81.UML中,类视图如何表示类中的继承与聚合? 82.客户端游标与服务器端游标的区别? 83...
7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. 使用ProxyFactory通过编程创建AOP代理 7.8. 操作被通知对象 7.9....