Я сериализирую данные моего приложения с помощью 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)