我使用 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/