XStream 是一个伟大的库来创建 XML 对象,反之亦然,和我使用它的很多的领域之一是存储配置。一个问题是,XStream 已被忽略字段序列化对象,而不是相反时 — — 例如,如果它发现在您的类中没有相应的属性的标记,它将引发异常。它是不清楚我为什么他们仍然没有任何事情来处理这种情况下,是相当普遍发生。例如,您可能有一个 XML 和只需要一小部分的数据,或者也许你改变你存储配置和删除某些属性的方式。在两种情况下你将不得不映射的整个对象图,即使你不想它。他们常见问题网页国这:

如果从类中删除字段,反序列化一个老的版本包含的字段将导致引发异常。离开中的地方,但将它声明为瞬态将避免该异常,但 XStream 不会试图反序列化的字段。

我发现这种行为非常奇怪、 令人讨厌,但幸运的是有一种变通方法: XStream 类有一个名为 wrapMapper(MapperWrapper next) 子类可能实施告诉图书馆是否应视为一个给定的类或属性的受保护的方法。在此方法中,您可以添加字段或你不想打扰,并为他们返回 false 的类核查。签出一个工作示例:

XStream x = new XStream() {@Overrideprotected MapperWrapper wrapMapper(MapperWrapper next) {return new MapperWrapper(next) {@Override@SuppressWarnings("rawtypes")public boolean shouldSerializeMember(Class definedIn, String fieldName) {if (fieldName.equals("shouldCopyWithProject")) {return false;}return super.shouldSerializeMember(definedIn, fieldName);}};}
};

在前面的示例中,过一个名为'shouldCopyWithProject'是在我的应用程序的较新版本中删除字段,但这种重构导致崩溃时打开了的文件从旧版本的应用程序,所以我不得不手动处理这种情况。如果 XStream 有一个清洁的解决方案为此,但这是非常不可能发生,这是巨大的。然而,这里所述的方法很有效。

// .....
XStream x = new XStream();
x.omitField(A.class, "shouldCopyWithProject");
// .....

原文地址:点击

【XStream】XStream 忽略不重要点元素相关推荐

  1. ETC2 区别于ETC的重要点

    ETC2 区别于ETC的重要点 ETC2 主要是对于NPOT却是4的倍数的贴图有较大压缩,比如一个1920X1080RGB的Loading图,ETC4压缩下不管用,大小5.9M,ETC2下压缩为1M ...

  2. mstem函数怎么定义_小白该怎么学Java开发 Java编程重要点有哪些

    小白怎么学Java开发?Java编程重要点有哪些?在Java的学习中,面向对象应该是Java技术的重中之重,虽然在生活中没有对象可以面对,但在技术中还是要一直接触面对对象,而且不可避免.下面小编为大家 ...

  3. java 使用 com.thoughtworks.xstream.XStream 将map转为xml

    public static void map2xml(Map<String, String> map) throws DocumentException, IOException {XSt ...

  4. Redis 中的 集合(Set)SREM:从集合中移除元素 忽略不存在的元素

    这里写目录标题 5.2 SREM:从集合中移除元素 5.2.1 忽略不存在的元素 5.2.2 其他信息 参考目录 5.2 SREM:从集合中移除元素 通过使用SREM命令,用户可以从集合中移除一个或多 ...

  5. Oracle中select函数以及分组多表连接等重要点以及示例

    Oracle中select函数以及分组多表连接等重要点 函数 –函数 –内置函数和自定义函数 –单行函数:一条记录返回一个结果的 –多行函数|组函数|聚合函数:多条记录返回一条结果的 单行函数 单行函 ...

  6. java2实用教程_Java2实用教程(第5版)重要点及遗漏点(二)

    3.2 语句概述 一个分好也是一条语句,称作空语句. 3.3.1 if语句 If(表达式) If后面的一堆小括号()内的表达式的值必须是boolean类型 3.3.2 if-else语句 If-els ...

  7. 关于处理百万级大批量数据的mysql运行几个重要点

    处理大批量百万级的数据几点重要知识点: 一:设置php运行的内存配置 ini_set("memory_limit","1200M"); 在php.ini中有如下 ...

  8. java2实用教程知识点_Java2实用教程(第5版)重要点及遗漏点(三)

    4.6.2 类的关联关系和依赖关系的UML图 1.关联关系 A类中的成员变量是B类声明的对象,那么A和B的关系是关联关系 UML图是从A指向B方向实线箭头 2.依赖关系 A类中某个方法的参数是用B类声 ...

  9. 搭建智能语音交互系统重要点那些

    序言 随着人工智能命题的提出,近年来涌现出一大批基于人工智能的呼叫中心业务服务商和集成商,仅智能外呼这一模块儿就将近百家公司在推广和运营.可以说整个基于人工智能技术的市场开始蓬勃的发展起来了. 简单介 ...

最新文章

  1. 【求助】哪个软件负责在屏幕右下角显示类似“caps lock on/off”的? - 技术封存区 - 专门网论坛 -...
  2. OpenCV 获取并修改图中的像素点
  3. 一劳永逸解决npm安装速度慢的问题
  4. 基于事件的 NIO 多线程服务器--转载
  5. 深夜福利, 小试linuxkit
  6. java基础的第二轮快速学习!day03
  7. 【GPU】nvidia-smi输出内容释义及使用
  8. jQuery 追加元素的方法如append、prepend、before、after
  9. 1.2 文本域(含可编辑表格实现)
  10. bootstrap modal 一闪
  11. UIKit框架-高级控件Swift版本: 5.UITextView方法/属性详解
  12. 0-5v转0-20ma和0-5v转4-20ma
  13. 五个部署Hyper-v的常见错误.
  14. css的z-index属性,div折腾了好久
  15. 建立完善的日期定义表
  16. linux中的文本处理方法集锦
  17. 苹果服务器修改,82559修改MAC及服务器版本网卡教程!
  18. 修改注册表让PPC手机更加省电方法
  19. 华夏互联十年网站开发经验-只为更专业
  20. java 推荐系统_电商个性化推荐系统:协同过滤算法方案解析

热门文章

  1. 借助acs来实现telnet、ssh的远程认证
  2. struts tags 学习
  3. flex 3.0序列号
  4. Linux计划任务与压缩归档
  5. centos7数据库mysql+mariadb
  6. 从0实现一个tinyredux
  7. ZooKeeper增加Observer部署模式提高性能(转)
  8. java课程第七天,匿名内部类以及异常处理
  9. 移动H5前端性能优化指南[转]
  10. 分享一套超棒的iOS “空状态” (empty state) 界面UI设计