Skip to content

Enhance Sequence support #671

@k163377

Description

@k163377

Describe the solution you'd like
Currently, the functionality of Sequence is limited compared to Collection and others.
For example, @JsonDeserialize(contentUsing = ... is not available.

class SequenceTests {
    val mapper = jacksonObjectMapper()

    class ContentDeser : StdDeserializer<String>(String::class.java) {
        override fun deserialize(p: JsonParser, ctxt: DeserializationContext): String = p.text + "-deser"
    }

    data class ListWrapper(@JsonDeserialize(contentUsing = ContentDeser::class) val value: List<String>)

    @Test
    fun listContentDeser() {
        val result = mapper.readValue<ListWrapper>("""{"value":["foo"]}""")
        assertEquals("foo-deser", result.value.single())
    }

    data class SequenceWrapper(@JsonDeserialize(contentUsing = ContentDeser::class) val value: Sequence<String>)

    @Test
    fun sequenceContentDeser() {
        val result = mapper.readValue<SequenceWrapper>("""{"value":["foo"]}""")
        assertEquals("foo-deser", result.value.single()) // -> fails
    }
}

There are several other features that are not available in principle.
These features should be available.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions