ElementListUnion - простой XML-файл, дающий двойную аннотацию для объектов общего списка
Я пытаюсь десериализовать поле списка с помощью elementlistunion
Customer.java
@ElementListUnion({ @ElementList(inline = false, type = Thing.class),
@ElementList(inline = false, type = AnotherThing.class) })
List<Object> things = new ArrayList<Object>();
где Thing и AnotherThing - 2 POJO's. Но я получаю следующее исключение
03-21 18:56:31.940: E/AndroidRuntime(2289): Caused by:
org.simpleframework.xml.core.PersistenceException: Duplicate annotation
of name 'things' on
@org.simpleframework.xml.ElementListUnion(value=
[@org.simpleframework.xml.ElementList(data=false,
empty=true, entry=, inline=false, name=, required=true, type=class
com.data.Thing), @org.simpleframework.xml.ElementList(data=false,
empty=true, entry=, inline=false, name=, required=true, type=class
com.data.AnotherThing)]) on field 'things' java.util.List
com.data.Customer.things
Я застрял на этом целый день. Пожалуйста помоги.
Вот мой ответ xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<address>
<no>122</no>
<street>xxx</street>
</address>
<id>122</id>
<name>James Bond</name>
<things>
<thing>
<val>185</val>
</thing>
<thing>
<val>162</val>
</thing>
</things>
1 ответ
Я не знаю, почему вы пытаетесь сделать два класса в ElementsListUnion. Ты можешь использовать
@ElementList(inline = false, type = Thing.class)
вместо этого или
@ElementListUnion({ @ElementList(inline = false, type = Thing.class, required = false),
@ElementList(inline = false, type = AnotherThing.class, required = false) })
если вы не отправляете два типа элементов каждый раз.