Search code examples
javaandroidkotlinjackson-dataformat-xml

JacksonXML simple list of Strings serialization and desirialization


I have this xml

<DeviceSettings>
        <Messages>
            <Message>1</Message>
            <Message>2</Message>
            <Message>3</Message>
        </Messages>
</DeviceSettings>

My Kotlin data classes:

data class DeviceSettings(
    @JacksonXmlElementWrapper(localName = "Messages")
    @JacksonXmlProperty(localName = "Messages")
    val  messages: List<String>
)

This looks like its working ok but I really dont understand why when serilizing back the object it becomes like this

<DeviceSettings>
<Messages>
<Messages>1</Messages>
<Messages>2</Messages>
<Messages>3</Messages>
</Messages>
</DeviceSettings>

I would also like to have this structure:

data class DeviceSettings(
    @JacksonXmlProperty(localName = "Messages")
    val  messages: List<Message>
)

data class Message(
    val value: String,
)

But the above trows an error about wrong type


Solution

  • Solved via

    data class DeviceConfig(
        @JacksonXmlProperty(localName = "Messages")
        val  messages: Messages
    )
    
    data class Messages(
        @JacksonXmlElementWrapper(localName = "Messages" ,useWrapping = false)
        @JacksonXmlProperty(localName = "Message")
        val messages: List<String>
    )