Skip to content

Add support for "name:type" style Headers #474

@cowtowncoder

Description

@cowtowncoder

Currently use of Header row (and manual construction of CsvSchema) assume that headers only specify name of column position. But there exists usage, wherein header line contain type mappings too:

name:string,enabled:boolean, ...

It would be great to support this.

There is an immediate problem with "type" definition: as things are, only a very limited set of types is recognized for CsvColumn. But we could divide implementation into two main parts:

  1. Support mapping to existing small set of types (probably allowing case-insensitive type definition)
  2. Support configurability of extension types, by providing converters from String value into target types.

For (2) there is also additional step needed: whereas we could expose JsonToken values for:

  1. Strings
  2. Numbers
  3. Booleans
  4. nulls

everything else would need to be exposed as JsonToken.VALUE_EMBEDDED_OBJECT.
But if so, any and all types could be supported -- as long as jackson-databind deserializers (JsonDeserializer impelmentations) consider possibility of embedded type.

Doing above is not trivial, but would be a very powerful mechanism for customized binding from CSV data. Some amount of duplication would likely result (for Converters) but that seems acceptable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions