2012-02-09 5 views
0

Я сериализую данные своего приложения с помощью xstream. Так как это должно быть прочитано другими приложениями - или даже просмотреть manuall, я хотел бы затронуть XML.Как использовать XStream для создания меньшего размера для простых карт?

У меня есть большие карты очень простых типов, например 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>.

Возможно, вы можете указать мне на решение, спасибо.


Возможно, 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

Возможно, вы должны исправить нулевой указатель? – skaffman

+0

Предположим, я должен. Но как? Я полагаю, что я не должен использовать 'Entry.class', но я не вижу, какой из них является подходящим классом. – bdecaf

ответ

1

Существует в XStream
TreeMapConverter Может быть, это может помочь вам.
Вы можете дополнительно прочитать об этом here

+0

Хмм, к сожалению, похоже, что это так близко, я могу добраться до решения. – bdecaf

Смежные вопросы