Как бы я использовал XStream для получения меньшего вывода для простых карт? - PullRequest
0 голосов
/ 09 февраля 2012

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

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

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Есть TreeMapConverter в XStreamМожет быть, это может помочь вам.Подробнее об этом можно прочитать здесь

0 голосов
/ 09 февраля 2012
...