JavaBean、xml、json、map相互转换
2015-12-16 10:25
711 查看
1.JavaBean转xml
xstream:maven配置<!-- xstream --> <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.7</version> </dependency>
public static XStream xstream = new XStream(); public static String objectToXml(Object object, String key,Class clazz) { xstream.alias(key, clazz); return xstream.toXML(object); } public static String objectToXml(Object object, Map<String,Class> map) { Class clazz; for (String key : map.keySet()) { clazz = map.get(key); if(clazz!=null) { // xstream.alias("xml", clazz); xstream.alias(key, clazz);//把className替换成key } } return xstream.toXML(object); }
2.xml转JavaBean
public static Object xmlToObject(String xml, Class clazz) { if (clazz != null) //微信公众平台开发的时候需要把更节点替换成xml !!!! { xml = xml.replace("<xml>", "<" + clazz.getName() + ">"); xml = xml.replace("</xml>", "</" + clazz.getName() + ">"); } try { Object fromXML = xstream.fromXML(xml); return fromXML; } catch (Exception e) { e.printStackTrace(); return null; } } public static Object xmlToObject(InputStream xml, Class clazz) { BufferedReader bf; try { bf = new BufferedReader(new InputStreamReader(xml, "UTF-8")); // 最好在将字节流转换为字符流的时候 进行转码 StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = bf.readLine()) != null) { buffer.append(line); } return xmlToObject(buffer.toString(), clazz); } catch (Exception e) { e.printStackTrace(); } return null; }
3.xml转Map
public static Map<String, Object> xmlToMap(InputStream input) { Map<String, Object> map = new HashMap<String, Object>(); try { SAXReader saxReader = new SAXReader(); Document doc = saxReader.read(input); Element root = doc.getRootElement(); List<Element> elements = root.elements(); for (Element element : elements) { map.put(element.getName(), element.getText()); System.out.println("map:" + element.getName() + ":" + element.getText()); } } catch (DocumentException e) { e.printStackTrace(); throw new RuntimeException(e); } return map; }
4.Map转JavaBean
public static void mapToBean(Map<String, Object> map, Object obj) { BeanInfo beanInfo = null; try { beanInfo = Introspector.getBeanInfo(obj.getClass()); } catch (IntrospectionException e1) { e1.printStackTrace(); } PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { try { String key = property.getName(); String key2 = key.substring(0, 1).toUpperCase() + key.substring(1); //首字母大写 //getAbcAbc() -> abcAbc(key) ->AbcAbc(key2) 避免类似微信开发 字段首字母大写的情况 if (map.containsKey(key)) { Object value = map.get(key); System.out.println("--------key "+key+"----map.get(key)"+map.get(key)); // 得到property对应的setter方法 Method setter = property.getWriteMethod(); setter.invoke(obj, value); } else if (map.containsKey(key2)) { Object value = map.get(key2); System.out.println("--------key2 "+key2+"----map.get(key)"+map.get(key2)); Method setter = property.getWriteMethod(); setter.invoke(obj, value); } } catch (Exception e) { System.out.println("transMap2Bean Error " + e); continue; } } return; }
相关文章推荐
- eclipse报错: Unhandled event loop exception No more handles
- eclipse构建及运行maven web项目
- 一个经典例子让你彻彻底底理解java回调机制
- java线上调试小结
- java 包装类
- JAVA设计模式之单例模式
- Spring基础知识汇总
- 最基础的通过myeclipse搭建框架开发java web工程的步骤详解
- 【Java EE 学习 69 中】【数据采集系统第一天】【SSH框架搭建】
- Java Web开发环境配置
- 【转】Eclipse Class Decompiler——Java反编译插件
- 分支限界_01背包问题_Java实现
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
- Spring中的线程池ThreadPoolTaskExecutor介绍
- 安装AndroidStudio后Eclipse 无法启动问题
- 比JDK高效的array equals
- vaadin系列(一)框架和spring整合
- 万年历---java版
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
- spring cron定时器表达式