Unmarshaller转换xml到对像为空的问题
来源:互联网 发布:零基础学算法第一章 编辑:程序博客网 时间:2024/06/13 00:39
遇到一个奇怪的问题,在使用@RequestBody解析XML时,下面这个类在解析后,ToUserName是空的。
@XmlRootElement(name = "xml") public class MMM { private String ToUserName; public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } @Override public String toString() { return "MMM{" + "ToUserName='" + ToUserName + '\'' + '}'; } }
一开始怀疑解析xml的HttpMessageConverter没有配置好,然后加入了自定义的HttpMessageConverter,发现HttpMessageConverter没有问题,在使用中。
深入debug,发现数据没有问题,在下面这里转换后结果为空:
Unmarshaller unmarshaller = createUnmarshaller(clazz);if (clazz.isAnnotationPresent(XmlRootElement.class)) { return unmarshaller.unmarshal(source);}
unmarshal 为什么会失败呢,多方测试,找到了解决方法:
@XmlElement //1.加这个注释可以转换成功private String ToUserName;//2.使用public也可以转换成功public String ToUserName;
难道unmarshaller不支持private+setter/getter方法吗? 一开始我是这样以为的,但是后面又遇到问题,在一次对像转换到xml的时候,我发现使用private+setter/getter方法的情况下,转出来的xml字段是小写开头的!! 原来如此。
因为成员ToUserName是大写开头的,而unmarshaller在检查到getToUserName后,会猜测变量名为toUserName,所以xml转对像时ToUserName是空的。
为什么我要大写ToUserName? 因为微信公众号开发这个坑,不解释了,谁用谁知道。
阅读全文
0 0
- Unmarshaller转换xml到对像为空的问题
- JAXB 初识(由XML转换为JavaBean) Unmarshaller 的使用
- java通过xstream将xml转换为java对象遇到的问题(一个对像中两个子类的类名相同)
- 将领域对像的数据转换为DataSet
- weblogic92启动时的问题:Unmarshaller failed
- weblogic92启动时的问题:Unmarshaller failed .
- clearsiver cgi获取到的post数据为空问题
- clearsiver cgi获取到的post数据为空问题
- clearsiver cgi获取到的post数据为空问题
- clearsiver cgi获取到的post数据为空问题
- clearsiver cgi获取到的post数据为空问题
- clearsiver cgi获取到的post数据为空问题
- castor Unmarshaller 汉字编码问题
- MySQL日期转换为空问题
- 将Image对像转换为png格式的byte数组
- 将Image对像转换为png格式的byte数组
- 将Image对像转换为png格式的byte数组
- 将Image对像转换为png格式的byte数组
- 基本数据类型
- Windows下MySql错误代码1045的解决方法
- 发现一个好玩的网页
- Mac 忘记root密码解决方法--Star.hou
- 2017年8月9日 星期三
- Unmarshaller转换xml到对像为空的问题
- IDEA 运行文件时报错Error:java: Compilation failed: internal java compiler error
- Java 1.1 java开发环境
- 程序员高逼格指南
- 2017年8月10日 星期四
- HDOJ2955 Robberies(01背包,概率)
- unicode,ansi,utf-8,unicode big endian编码区别 --篇3
- 滑动窗口
- HDU 2102 BFS