JSON has six value types: string, number, boolean, null, object, and array. CSV has one: string. Bridging the gap means representing each JSON type as a string that a downstream tool can parse back into the right type on import. Numbers travel by writing them unquoted: 42, not "42". Spreadsheet and data tools coerce unquoted numeric strings to numbers automatically. Booleans travel by writing the literal tokens true and false. Most tools recognise these on import, though Excel reads them as text by default unless the column is explicitly typed. Nulls travel as empty cells, which is the convention every spreadsheet and SQL bulk-import tool recognises.
Strings travel quoted when necessary per RFC 4180. A string value that happens to look like a number, such as a ZIP code with leading zeros, needs special handling because most tools coerce it to a number on import and strip the leading zeros. FixTools offers a column-level option to wrap such strings in =" syntax, which signals text to Excel and prevents coercion. This is the difference between 00501 staying as 00501 in the CSV and becoming 501 after Excel opens the file.
Numbers with very high precision are another edge case. JSON numbers are conventionally double-precision floats per the spec, with about 15 significant digits of safe precision. Values beyond that can lose precision during parse. If your data has integers larger than 2^53 (such as Twitter snowflake IDs or some Mongo numberLong values), keep them as strings in the source JSON to preserve precision through the conversion.
Dates are not a JSON type but appear as ISO 8601 strings by convention. They travel through CSV cleanly because the string representation is preserved exactly. Excel auto-parses ISO 8601 dates as date values on import for most regional locales. For dates in non-standard formats, the downstream tool may parse them as text rather than dates, in which case you can format them as proper dates in the spreadsheet after import.