Соответствие нестандартных типов в ElementUnion

Учитывая этот XML:

<param> <value> <struct> <member> <name>token</name> <value> <string>72gyVfhmicKwqMumCA0VjhOc9C7</string> </value> </member> <member> <name>status</name> <value> <string>200 OK</string> </value> </member> </struct> </value> </param> 

Я пишу следующие аннотированные классы, чтобы соответствовать xml:

Param:

 @Root data class Param(@field:Element var value: Value) 

Стоимость:

 @Root data class Value(@field:ElementUnion(Element(name = "string", type = String::class, required = false), Element(name = "int", type = Int::class, required = false), Element(name = "double", type = Double::class, required = false), Element(name = "array", type = Array::class, required = false), Element(name = "struct", type = Struct::class, required = false)) val value: Any) 

И, наконец, Struct:

 @Root data class Member(@field:Element var name: String, @field:Element var value: Value) @Root data class Struct(@field:ElementList(inline = true) var items: MutableList<Member>) { fun add(key: String, value: Any) { items.add(Member(key, Value(value))) } } 

Я попытался реализовать Struct как карту, но мне тоже не повезло, я могу сериализовать без проблем, проблема заключается в десериализации, поскольку XML происходит из веб-API и поэтому не имеет подсказок class = ...

Пробовал использовать type = LinkedHashMap::class в этом случае он совпадает, но сбой:

 Exception in thread "main" org.simpleframework.xml.core.ElementException: Element 'member' does not have a match in class java.util.LinkedHashMap at line 1 

    Intereting Posts
    Как имитировать излучение 2 infiite Наблюдаемые потоки и есть другие Observable, которые объединяют их и буферируют каждые 10 секунд? RxJava 2 требует другого типа возвращаемого типа, чем RxJava 1 (Kotlin) Как создать заголовок вложенного / разделенного столбца с помощью TornadoFx? Kotlin + Dagger2: не может быть предоставлен без конструктора @Inject или из метода @ Provides- или @ Produces-annotated Нажатие текстового поля для изменения фрагмента Android Kotlin StringRes quantityString Коллекции Kotlin бросают ClassNotFoundException на Android Гик-инъекция: разница между getBinding / getExistingBinding / getProvider и getInstance Классы кинжалов отображаются как красные, но все еще строятся Android WebView прыгает вверху каждого обновления страницы (?) slf4j simple, можно ли фильтровать сообщение на одном уровне? «Код в интерфейсах» Котлин, как они избегают «смертельного алмаза смерти»? Проверка типов запустила рекурсивную в kotlin Vert.x Service Proxies от Kotlin с vertx-codegen Как создать вкладку в anko