JSON
JavaScript Object Notation is the default interchange format of the web: nested, self-describing, and readable by a human at a glance. It is also verbose, and it is not a table.
- Type information
- Strings, numbers, booleans, null
- Structure
- Nested objects and arrays
- Compression
- None
- Typical file size
- Largest — keys repeat on every record
- Schema
- Implicit, per record
- Human-readable
- Yes, though verbose
- Tool support
- Every language, natively
JSONParquet
Runs on your deviceOptions
Reading JSON
Auto-detect reads the first rows and picks the separator that splits them consistently.
Turn off when the file starts straight into data. Columns are then named column_1, column_2, and so on.
Turns "42" into a number and "true" into a boolean. Values with leading zeros stay text so IDs and zip codes survive.
Which worksheet to convert. Filled in once the workbook is read.
Dotted path to the array of records, such as data.items. Leave empty to use the whole document.
Turns {"user":{"id":7}} into a user.id column. Arrays are kept as JSON text.
Pick the encoding the file was written in. Wrong encoding shows up as garbled accents.
Comma-separated words that should become null instead of text.
Writing Parquet
Snappy is the default across Spark, DuckDB and pandas. Gzip is smaller but slower to read.
Turns a user.id column back into {"user":{"id":7}}.
Excel needs a byte order mark to open UTF-8 files with accents correctly.
Rows per row group. Larger groups compress better; smaller groups let readers skip more.
conversion-preroll
This short ad is what keeps the converter free.
JSON has six types — string, number, boolean, null, object and array — and no more. There is no date type, no integer-versus-float distinction, and no decimal. Everything numeric is a 64-bit float, which is why identifiers longer than about fifteen digits silently lose precision in most JSON tooling. Dates travel as ISO-8601 strings by convention, not by specification.
The nesting is the point and the problem. It maps perfectly onto application objects, which is why every API speaks it, and badly onto rows and columns, which is why converting to a tabular format requires deciding what to do with nested objects and arrays. Flattening nested objects into dotted columns is the usual answer; arrays have no good tabular answer at all, so they tend to be kept as text.
For anything large, plain JSON is the wrong shape: the whole document must be parsed before the first record is available. JSON Lines exists precisely to fix that.
What JSON is good at
- Native support in every mainstream language.
- Represents nested structures without any extra convention.
- Self-describing — field names travel with the data.
- Human-readable and diff-friendly when formatted.
Where it falls short
- Verbose: every key is repeated on every record.
- No date, decimal or integer types.
- Numbers beyond 2^53 lose precision in most parsers.
- Must be parsed in full before any record can be used.
Convert JSON files
From JSON
To JSON