The json2csv script would probably take options to declare which columns should be split off into their own files. And if there are multiple values for a column for which the option has not been given, give an error.

Cost: $150.

carry over nesting by encoding into strings; for example, [{a:"a",b:"b",c:["c1","c2"],d:"d"}] is turned into:

A;B;C;D
a;b;"[\"c1\",\"c2\"]";d

Here using JSON encoding for the nested data. JSON is nice since it allows infinitely deep nesting ;). Custom encoding (serialization format) could be something like

A;B;C;D
a;b;c1.c2;d

but one would only do that if invention of new serialization formats is necessary (like Excel not having functions to parse JSON fragments).