系统交互中,经常会遇到各种形式的参数传递,XML、Map、Json等等,今天整理了一个涵盖各种类型转换的工具类,与大家分享分享!
package org.ccnu.edu.util; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.io.Writer; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import com.sun.org.apache.xml.internal.serialize.OutputFormat; import com.sun.org.apache.xml.internal.serialize.XMLSerializer; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.core.util.QuickWriter; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; import com.thoughtworks.xstream.io.xml.XppDriver; /** * describe:bean 、 List<bean>、Map、XML、JSON 相互转换 * * @author Fei.wei * @since JDK 1.6 Date:2015-11-19上午9:30:36 */ @SuppressWarnings("all") public class ObjectConvertUtil<T> { /** * * objectToMap:对象转换为map * * @author Fei.wei * @param t * @return * @throws IntrospectionException * 类属性分析失败 * @throws IllegalArgumentException * @throws IllegalAccessException * @throws InvocationTargetException * 调用属性的setter方法失败 * @since JDK 1.6 Date:2015-11-19 上午9:39:10 */ public static <T> Map<String, String> objectToMap(T t) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { Class<? extends Object> type = t.getClass(); Map<String, String> map = new HashMap<String, String>(); BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo .getPropertyDescriptors(); for (int i = 0; i < propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals("class")) { Method readMethod = descriptor.getReadMethod(); // 调用get方法取值 invoke第二参数 new Object[]{} 都行,参数为空 Object result = readMethod.invoke(beanInfo, new Object[0]); if (result != null) { map.put(propertyName, (String) result); } else { map.put(propertyName, ""); } } } return map; } /** * * mapToObject:map转换成对象 * * @author Fei.wei * @param type * @param map * @return * @throws IntrospectionException * @throws InstantiationException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException * @since JDK 1.6 Date:2015-11-19 上午9:47:42 */ public static <T> T mapToObject(Class<T> type, Map<String, String> map) throws IntrospectionException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo .getPropertyDescriptors(); // 创建bean对象 T javaBean = type.newInstance(); for (int i = 0; i < propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; if (map.containsKey(descriptor.getName())) { // 调用set方法,给属性赋值 Method m = descriptor.getWriteMethod(); m.invoke(javaBean, new Object[] { map.get(descriptor.getName()) }); } } return javaBean; } /** * * listToJson:List<T> 转换成 josn * * @author Fei.wei * @param t * @return * @since JDK 1.6 Date:2015-11-16 下午5:03:56 */ public static<T> String listToJson(T t){ return JSONArray.fromObject(t).toString(); } /** * * jsonToList:json 转换成 List<T> * * @author Fei.wei * @param json * @param type * @return * @since JDK 1.6 Date:2015-11-16 下午5:04:39 */ public static<T> List<T> jsonToList(String json,Class<T> type){ JSONArray jsonArray = JSONArray.fromObject(json); ArrayList<T> list = new ArrayList<T>(); for(Object obj : jsonArray){ list.add(jsonToObject(obj.toString(),type)); } return list; } /** * * objectToJson:bean 转换成json * * @author Fei.wei * @param object * @return * @since JDK 1.6 Date:2015-11-10 下午3:33:21 */ public static<T> String objectToJson(T t){ return JSONObject.fromObject(t).toString(); } /** * * jsonToObject:json转换成bean * * @author Fei.wei * @param json * @param type * @return * @since JDK 1.6 Date:2015-11-10 下午3:33:30 */ @SuppressWarnings("unchecked") public static<T> T jsonToObject(String json,Class<T> type){ JSONObject jsonObject = JSONObject.fromObject(json); /** * java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to * 添加JsonConfig,避免抛上面的异常 */ JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setRootClass(type); return (T) JSONObject.toBean(jsonObject,jsonConfig); } /** * * xmlToObj:xml转换成obj * * @author Fei.wei * @param cl * @param xmlString * @return * @throws Exception * @since JDK 1.6 Date:2015-3-26 下午2:34:26 */ public static<T> T xmlToObj(Class<T> cl,String xmlString) throws Exception{ JAXBContext context = JAXBContext.newInstance(cl); ByteArrayInputStream stream = new ByteArrayInputStream(xmlString.getBytes("utf-8")); Unmarshaller um = context.createUnmarshaller(); T p = (T) um.unmarshal(stream); stream.close(); return p; } /** * * objToXML:obj转换成xml * * @author Fei.wei * @param cl * @param obj * @return * @throws Exception * @since JDK 1.6 Date:2015-3-26 下午2:37:08 */ public static<T> String objToXML(Class<T> cl,Object obj) throws Exception{ JAXBContext context = JAXBContext.newInstance(cl); Marshaller m = context.createMarshaller(); ByteArrayOutputStream out = new ByteArrayOutputStream(); XMLSerializer serializer = getXMLSerializer(out); m.marshal(obj, serializer); out.flush(); String xmlString = new String(out.toByteArray(),"utf-8"); return xmlString.substring(xmlString.indexOf("<", 2)); } private static XMLSerializer getXMLSerializer(OutputStream out){ OutputFormat of = new OutputFormat(); of.setCDataElements(new String[]{"^PicUrl","^Url","ns1^foo","ns2^bar","^baz"}); of.setPreserveSpace(true); of.setIndenting(true); XMLSerializer serializer = new XMLSerializer(of); serializer.setOutputByteStream(out); return serializer; } /** * * objToXML:obj转xml,添加 <![CDATA[]]> 标签 * * @author Fei.wei * @param obj * @return * @since JDK 1.6 Date:2015-3-26 下午2:46:11 */ public static String objToXML(Object obj) { xstream.alias("xml", obj.getClass()); return xstream.toXML(obj); } private static XStream xstream = new XStream(new XppDriver() { public HierarchicalStreamWriter createWriter(Writer out) { return new PrettyPrintWriter(out) { boolean cdata = true; @SuppressWarnings("rawtypes") public void startNode(String name, Class clazz) { super.startNode(name, clazz); } protected void writeText(QuickWriter writer, String text) { if (cdata) { writer.write("<![CDATA["); writer.write(text); writer.write("]]>"); } else { writer.write(text); } } }; } }); }
相关推荐
List<Bean>转换为List<Map>, List<Object>转换为List<Object> list转化为 JsonArray ,list转换JsonArray
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map<String, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List<Map<String, Object>...
json字符串实体bean或者List<bean>互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢
将list<Map>转换成JavaBean的工具类
拆分list,将list<bean>中的内容根据某一属性的值对list进行拆分,分组
常见问题和解决方法 31<br/>第3章 企业Bean 35<br/>1,企业Bean概述 36<br/>2,会话Bean 36<br/>3,EntityBean 38<br/>4,Message-Driven Bean 40<br/>5.定义客户端访问接口 42<br/>6,企业Bean的“内容” 45<br/>7...
Map里存放的是List时<br><br><logic:iterate id="destMap" name="srcMap"><br><br> <logic:iterate id="bean" name="destMap" property="value" /><br><br> <bean:write name="bean" property="name" /><br><br> </...
spring+xmemcached aop切面 需要xmemcached-1.2.5+spring-2.5.6 <bean name="factoryMemcachedClient" ... destroy-method="shutdown"> <property name="servers"> <value>${XMemcached_servers}</value... </bean>
考试系统 <br><br>类<br>Bean 类<br>Com.gton.bean.*<br>AdminBean 管理员<br>ResultBean 结果<br>TestBean 试题<br>TestsBean 试卷<br>UserBean 用户<br>Com.gton.bean.db.*<br>DataBean 数据库操作<br>...
<ref bean="mappingJacksonHttpMessageConverter" /> <ref bean="stringHttpMessageConverter" /> </list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework...
<value>com/bean/Tuser.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.OracleDialect </...
可将List<Bean>导出成Excel,或读取Excel成List<Bean>、Map<String,Object>,很方便,可配置日期格式,可识别数字,经过企业级测试有效. <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</...
</bean> <bean id="student" class="cn.sxt.vo.Student"> <property name="name" value="张三丰"></property> <property name="addr" ref="addr"/> <property name="books"> <array> <value>...
<ref bean="myJobTrigger" /> </list> </property> </bean> <!-- 启动触发器的配置结束 --> <!-- 调度的配置开始 --> <!-- quartz-1.8以前的配置 <bean id="myJobTrigger" class="org.spring...
<br/><br/>学完本教程之后,您将会了解:<br/><br/>整体体系结构 <br/>客户机和服务器的角色 <br/>会话和实体 Bean 的生命周期 <br/>学完本教程之后,您将学会:<br/><br/>构建基于 EJB 技术的分布式系统 <br/>创建...
基于 IP 验证和授权插件的源码及jar,jar包可直接拷贝至activemq 目录下的 lib 目录... <list> <value>127.0.0.1</value> <value>192.168.168.1</value> </list> </property> </bean> </plugins> 后直接使用
<bean id="departmentDao" class="my.aop.dao.DepartmentDaoJdbcImpl" scope="prototype"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="userDao" class="my.aop.dao....
</bean> <bean id="mysessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="mydataSource"> </property> <property name=...
<bean id="sayHelloJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass"> <value>com.test.Test</value> </property> </bean> <!-- 关键在如下两个触发器的...
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"> </property> <property name="url" value="jdbc:...