私のアプリケーションのデータをxstreamでシリアル化します。それは他のアプリケーションで読む必要があります。あるいはXMLを見てみたいと思います。単純なマップでは、XStreamを使用して出力を小さくするにはどうすればよいですか?
私はTreeMap<Integer,Double>
とTreeMap<String,Double>
のような非常に単純なタイプの大きなマップを持っています。私はこれらのために出力をよりコンパクトにしたい。残念ながらthis.aliasAttribute(Entry.class, "key", "key")
を使用して、私の実験は、nullポインタ例外で失敗<entry key="56">38.0</entry>
に
<entry>
<int>56</int>
<double>38.0</double>
</entry>
:から言います。
Converter
を書く/登録する方法を理解する上で問題がありますが、これはTreeMap<Integer,Double>
を処理しますが、TreeMap<Object,MyComplexObject>
のデフォルトの動作を維持します。
多分あなたは私に解決策を教えることができます、ありがとう。
多分stacktraceはいくつかの情報を与えることができます。
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)
おそらく、あなたはnullポインタを修正する必要がありますか? – skaffman
する必要があります。しかしどうですか?私は 'Entry.class'を使ってはいけないと思いますが、どちらが適切なクラスであるかは分かりません。 – bdecaf