FasterXML / FasterXML/jackson-dataformats-text

Add support for "name:type" style Headers

Open
#474 0 comments 0 reactions 0 assignees View on GitHub
csv
Dominant language
Java
Stars
455
Forks
164
Avg merge
6d 10h
Merged PRs (30d)
2

Description

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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.