FasterXML / jackson-core

Core part of Jackson that defines Streaming API as well as basic shared abstractions
Apache License 2.0
2.26k stars 792 forks source link

Allow registering "string-converter hook", for low-level coercion or String mutation #355

Open cowtowncoder opened 7 years ago

cowtowncoder commented 7 years ago

One common wish for processing (at various levels) is to be able to modify incoming String values, to either:

  1. Modify Strings themselves (trim whitespace, change casing etc), or
  2. Change type of scalar token reported (coercion): for example, change String value "12" into number 12 (int)

While such functionality is most often needed for formats like CSV and XML (and perhaps properties), it seems that due to needed across multiple formats this would really make sense as jackson-core functionality.

What probably makes sense is to try to figure out abstractions needed, interaction, but require implementations to wire actual activity. In fact, it is almost certainly impossible to do it efficiently and cleanly from within jackson-core itself (or from databind). But it should be possible to implement it in core both for API, and wiring for JSON, and then add similar functionality for other textual (and maybe, if there's demand, for binary?) codecs.

cowtowncoder commented 3 years ago

Note: created jackson-databind issue too, to increase visibility.