Я сериализую данные своего приложения с помощью 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)
Возможно, вы должны исправить нулевой указатель? – skaffman
Предположим, я должен. Но как? Я полагаю, что я не должен использовать 'Entry.class', но я не вижу, какой из них является подходящим классом. – bdecaf