在springboot下面使用xstream 将xml字符串转换成对象时出现 相同对象不能互转的问题

在springboot下面使用xstream 将xml字符串转换成对象时出现 相同对象不能互转的问题:
原因是因为SpringBoot重新加载了对象,若未指定classloader的时候,SpringBoot未正确使用classloader,

需要指定classloader。


添加代码如下:

    xstream.setClassLoader(clazz.getClassLoader()); 

 

eg:


				XStream xstream =new XStream();
				xstream.autodetectAnnotations(true);
				xstream.ignoreUnknownElements();
				xstream.alias("response", GreenLineWHResponse.class);
				xstream.alias("returnresult", ReturnResult.class);
				xstream.alias("pageactionout", LxWhPageActionOut.class);
				xstream.alias("data_row", LxWhDoctorSchedule.class);
				xstream.aliasField("data", GreenLineWHResponse.class, "m_doctorSchedule");
				xstream.setClassLoader(GreenLineWHResponse.class.getClassLoader());
				GreenLineWHResponse resp=(GreenLineWHResponse)xstream.fromXML(rtnMessage);
				ReturnResult result =resp.getReturnResult();
				checkRtn(result);	//检查返回结果
				flag = HyEnumHoptRtn.SUCCESS.getStatus();
				infos=resp.getDoctorSchedule();
			
			




	XStream xstream = new XStream();
        xstream.addPermission(AnyTypePermission.ANY);
        Class<?>[] classes = new Class[] {GreenLineWHResponse.class, ReturnResult.class,LxWhOrderInfo.class};
	xstream.allowTypes(classes);
	xstream.autodetectAnnotations(true);
	xstream.ignoreUnknownElements();
	xstream.setClassLoader(GreenLineWHResponse.class.getClassLoader());
	xstream.alias("response", GreenLineWHResponse.class);
	xstream.alias("returnresult", ReturnResult.class);
	xstream.aliasField("outputvalues", GreenLineWHResponse.class,"m_lxWhOrderInfo");
	GreenLineWHResponse resp=(GreenLineWHResponse)xstream.fromXML(rtnMessage);

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值