Skip to content

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

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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