Проблема с JacksonXmlElementWrapper на Kotlin - PullRequest
1 голос
/ 12 марта 2020

Я пытаюсь проанализировать файл XML, используя Джексона и Kotlin в Android Studio. В частности, я хочу запустить код из следующего тестового примера в jackson-module- kotlin:

https://github.com/FasterXML/jackson-module-kotlin/blob/master/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/github/Github153.kt

    @JacksonXmlRootElement(localName = "MyPojo")
    data class MyDataPojo (
            @JacksonXmlElementWrapper(localName = "elements")
            @JacksonXmlProperty(localName = "element")
            val elements : List<MyDataElement>
    )

    data class MyDataElement (
            @JacksonXmlProperty(localName = "value", isAttribute = true)
            var value: String
    )

I'm пытаюсь разобрать файл XML следующим образом:

    val xmlMapper = XmlMapper().apply {
        registerModule(KotlinModule())
    }
    val pojo = context.resources.assets.open(name).use { input ->
        xmlMapper.readValue<MyDataPojo>(input)
    }

Это происходит со следующим исключением:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid definition for property `elements` (of type `eu.tilk.wihajster.MyDataPojo`): Could not find creator property with name 'elements' (known Creator properties: [element])

Я использую Jackson 2.10.3, здесь мой раздел зависимостей из build.gradle:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.fasterxml.jackson.core:jackson-core:2.10.3'
    implementation 'com.fasterxml.jackson.core:jackson-annotations:2.10.3'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.3'
    implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.10.3'
    implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.10.3"
    implementation 'javax.xml.stream:stax-api:1.0-2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

Что я делаю не так? Этот код скопирован из теста для jackson-module- kotlin, поэтому я считаю, что он должен работать нормально.

...