2012-02-09 3 views
0

私のアプリケーションのデータを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) 
+0

おそらく、あなたはnullポインタを修正する必要がありますか? – skaffman

+0

する必要があります。しかしどうですか?私は 'Entry.class'を使ってはいけないと思いますが、どちらが適切なクラスであるかは分かりません。 – bdecaf

答えて

1

は、それはあなたを助けることができるかもしれませXStream
TreeMapConverterがあります。
あなたはこれについてさらに読むことができますhere

+0

残念ながら、これは私が解決策に到達する際には近いと思われます。 – bdecaf

関連する問題