We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Describe the bug Kotlin array iterators are serialized as beans, unlike Java iterators which as serialized as arrays, using the IteratorSerializer.
To Reproduce main.kt
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper val kotlinArray = arrayOf(1, 2, 3) fun main() { val mapper = jacksonObjectMapper() println("kotlin array: ${mapper.writeValueAsString(kotlinArray)}") println("kotlin array iterator: ${mapper.writeValueAsString(kotlinArray.iterator())}") println() println("java array: ${mapper.writeValueAsString(Java.array)}") println("java array iterator: ${mapper.writeValueAsString(Java.array.iterator())}") }
Java.java
public class Java { public static int[] array = {1, 2, 3}; }
Output:
kotlin array: [1,2,3] kotlin array iterator: {"array":[1,2,3]} java array: [1,2,3] java array iterator: [1,2,3]
Expected behavior I expected the JSON for Kotlin and Java array iterators to be consistent.
Versions Kotlin: Jackson-module-kotlin: 2.14.0 Jackson-databind: 2.14.0
Additional context This problem was found in a project with a mixed Java and Kotlin codebase.
Workaround: Force serializing all iterators as such, using a mixin:
@JsonSerialize(`as` = Iterator::class) internal interface KotlinIteratorMixin val mapper = jsonMapper { addModule(kotlinModule()) addMixIn(Iterator::class.java, KotlinIteratorMixin::class.java) }
The text was updated successfully, but these errors were encountered:
kotlin.jvm.internal.ArrayIterator
No branches or pull requests
Describe the bug
Kotlin array iterators are serialized as beans, unlike Java iterators which as serialized as arrays, using the IteratorSerializer.
To Reproduce
main.kt
Java.java
Output:
Expected behavior
I expected the JSON for Kotlin and Java array iterators to be consistent.
Versions
Kotlin:
Jackson-module-kotlin: 2.14.0
Jackson-databind: 2.14.0
Additional context
This problem was found in a project with a mixed Java and Kotlin codebase.
Workaround:
Force serializing all iterators as such, using a mixin:
The text was updated successfully, but these errors were encountered: