Flattening a shape that does not fit
JSON nests; CSV is a grid. Something has to give. Nested objects are flattened into dotted column names — address.city — which keeps the data and makes the header row longer.
Arrays are the harder case. An array of values becomes a single joined cell; an array of objects has no honest flat representation at all, and you will usually want to extract that part separately rather than force it into columns.
Missing keys and column order
Records in real JSON rarely have identical keys. The header is the union of every key seen, and a record missing one gets an empty cell — rather than the columns shifting, which is what happens when a converter takes the first record as authoritative.
Frequently asked questions
How are nested objects handled?
Flattened into dotted column names, so address.city becomes its own column. Nothing is dropped, but the header gets long on deeply nested data.
What about arrays inside my records?
An array of simple values is joined into one cell. An array of objects has no honest flat form — extract it separately rather than forcing it into columns.
My records have different keys. What happens?
The header covers every key that appears anywhere, and records missing one get an empty cell. Columns never shift.
Something wrong with this tool, or an idea for it? Tell us