Drops every key whose value is JSON null from row, recursively through nested
objects (built via KeySegment::Object/Array/InnerObject) and into array items
too – but never removes an array element itself, even a bare null one; “omit
null cells” is a per-key/per-field concept, not a positional one (an array’s own
null-dropping, where that’s wanted, is KeySegment::PlainArray’s job at insertion
time, not this row-wide pass). Only ever targets genuine Value::Null – an empty
string is a different, deliberate value and is left alone.
Builds a row’s output map. A column with no key (or a plain KeySegment::Simple)
inserts flatly under headers[sub_index], exactly as before this function supported
nesting at all. A column with a nested key (Object/Array/InnerObject) walks
that path instead, via insert_key_segment – see key_segment.rs. columns is
optional so existing callers that only ever built flat rows (no nested mapping in
play) don’t need to thread a &[Column] through just to get today’s behavior.