java - 我如何使用 XStream 为简单 map 生成较小的输出?

标签 java dictionary xstream

我使用 xstream 序列化应用程序的数据。由于它应该由其他应用程序读取 - 甚至手动查看,所以我想修改 XML。

我有非常简单类型的大 map ,例如 TreeMap<Integer,Double>TreeMap<String,Double> 。我想让我的输出更加紧凑。说自:

<entry>
    <int>56</int>
    <double>38.0</double>
</entry>

<entry key="56">38.0</entry>

不幸的是我的实验使用 this.aliasAttribute(Entry.class, "key", "key")因空指针异常而失败。

我在理解如何编写/注册Converter时遇到了问题。这将处理 TreeMap<Integer,Double>但保留 TreeMap<Object,MyComplexObject> 的默认行为.

也许你可以给我指出一个解决方案,谢谢。

<小时/>

也许堆栈跟踪可以提供一些信息。

java.lang.NullPointerException
    at com.thoughtworks.xstream.converters.reflection.FieldDictionary.buildMap(FieldDictionary.java:128)
    at com.thoughtworks.xstream.converters.reflection.FieldDictionary.fieldOrNull(FieldDictionary.java:113)
    at com.thoughtworks.xstream.converters.reflection.FieldDictionary.field(FieldDictionary.java:92)
    at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.getField(PureJavaReflectionProvider.java:181)
    at com.thoughtworks.xstream.mapper.AttributeMapper.addAttributeFor(AttributeMapper.java:169)
    at com.thoughtworks.xstream.XStream.useAttributeFor(XStream.java:1226)
    at com.thoughtworks.xstream.XStream.aliasAttribute(XStream.java:1192)
    at myproject.XstreamSerializer.<init>(XstreamSerializer.java:43)

最佳答案

XStream中有一个TreeMapConverter
也许它可以帮助你。
您可以进一步阅读此内容 here

关于java - 我如何使用 XStream 为简单 map 生成较小的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209048/

相关文章:

java - 从 log4j1 迁移到 log4j2

java - 如何创建使用 XStream 的 Arquillian 测试?

java - Android Studio 错误 :Class android. support.v4.hardware.display.DisplayManagerCompat 已添加到输出中。请删除重复的副本

java - 使用screencap截屏时出现0字节文件

java - Selenium java静默模式

swift - Swift 中的插入顺序字典(如 Java 的 LinkedHashMap)?

python - 获取 Pytables 一维数组中值的索引

c# - 增加字典中的数值

java - 如何编码使用 JAXB(或 XStream)更新 XML 文件而不写入整个文件

java - 使用 XStream 为可外部化的类使用默认的 Java 序列化