Serialization scheme for CSVs ensures durability, handling complex structures like sublists and polymorphism without failure. Encodes non-representable types using a fallback string format, defaulting to JSON. Handles non-standard CSVs and supports sequence and list reading with complex field handling.
Written in pure Kotlin common code, published for the platforms indicated above int he badges.
A serialization scheme for CSVs that is durable, meaning that it is meant to work for all cases (sublists, polymorphism) without failure.
To accomplish this, types that cannot be represented using CSVs (due to indeterminate column count) are encoded using a fallback string format (JSON by default).
In addition, it was set up to handle CSVs that are slightly non-standard - for example, it will work on "\r\n" line-terminated files just as well as "\rn" line-terminated files.
Supports:
Sequence Reading
Complex fields (struct, polymorphic, list, etc.) that are escaped using a special character (default '%')
Structure fields by path (i.e. header is dataclass.field)
Full List Reading
Complex fields (struct, polymorphic, list, etc.) that are escaped using a special character (default '%')
List fields by index (i.e. header is list.0)
List fields by escape (i.e. header is list, value is %[1, 2, 3])
Structure fields by path (i.e. header is dataclass.field)
Sequence Writing
Will write using steady headers - it will separate fields into multiple columns as long as there is a stable number of columns
Full List Reading
Will write using part headers - it will separate fields into multiple columns, since it can calculate the number of needed columns up front.