2012-01-11 4 views
3

У меня проблема с XStream. У меня есть класс Java под названием simplePerson следующим образом:Xstream List - Повторяющееся поле

public class SimplePerson { 

@XStreamAlias("name") 
private String name; 


private List<String> cars; 

Я использую его, чтобы преобразовать его в формат JSON с помощью:

XStream xstream = new XStream(new JettisonMappedXmlDriver(){ 
     public HierarchicalStreamWriter createWriter(Writer writer) { 
      return new JsonWriter(writer); 
     } 
    }); 

xstream.setMode(XStream.NO_REFERENCES); 

xstream.toXML(person) 

С его помощью я получаю JSON: { "simpleperson": { "имя": "Джо", "автомобили": [ "Ягуар", "БМВ"]}}

Когда я использую тот же JSON, чтобы преобразовать его обратно в объект, используя xstream.fromXML (JSON), Я получаю следующее исключение:

Исключение в потоке "основного" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter $ DuplicateFieldException: Дублирование поля автомобилей

Я не могу понять, в чем проблема. Я использую тот же самый точный json, который Xstream дал в качестве вывода. Любая помощь будет оценена по достоинству.

ответ

5

Думаю, вам нужно добавить неявную коллекцию. как.

xstream.addImplicitCollection(SimplePerson.class, "cars"); 
+0

FYI, у меня была такая же проблема, и это решение сработало для меня. – drt

+2

edit: Еще одно обновление для Xstream 1.2.2 Мне пришлось сделать это: xstream.addImplicitCollection (SimplePerson.class, "cars", String.class); – drt

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