JavaBean、xml、json、map相互转换

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;
	}








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值