知方号

知方号

使用XStream将XML转化成对象,忽略没有关联的属性<将xml转换成对象>

使用XStream将XML转化成对象,忽略没有关联的属性

使用背景 在和第三方系统集成的时候,数据传输的格式都是XML,第三方获取到数据之后,转化成XML发送过来,我方系统根据XML转化成对象,如果第三方系统的数据类型增加一个字段,再传输过来时,一般会抛出 “no such field”类似于这样的错误。

问题分析 我们在使用XStream对象时,一般都会直接new一个对象出来,例如

XStream xstream = new XStream();

这样使用之后,xml中的所有属性都需要被待转化的模型识别,假如有一个字段没有对应上,即会抛出错误。

问题解决 XStream 官方也提供这样一种构造方法。

XStream xstream = new XStream() { @Override protected MapperWrapper wrapMapper(MapperWrapper next) { return new MapperWrapper(next) { @Override public boolean shouldSerializeMember(Class definedIn, String fieldName) { if (definedIn == Object.class) { return false; } return super.shouldSerializeMember(definedIn, fieldName); } }; }};xstream.processAnnotations(XXX.class);

这样就算对方扩几个字段这边也不会有一点问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。