The audience for JSON isn't always a developer
An API response, a database export, or a generated report is naturally JSON — but the person who needs to review it is often a stakeholder, a support team, or a finance analyst who lives in Excel, not a text editor. Converting the data into a real spreadsheet file, rather than asking them to read raw JSON, is usually the faster path to getting useful feedback.
The core problem: spreadsheets are flat, JSON isn't
A spreadsheet is a grid of rows and columns — there's no native way to represent a nested object or a one-to-many relationship inside a single cell the way JSON's object/array nesting can. Any JSON-to-Excel conversion has to decide a flattening rule:
{
"name": "Ravi Kumar",
"address": { "city": "Surat", "country": "IN" },
"tags": ["dev", "go"],
"orders": [{ "id": 1, "total": 40 }, { "id": 2, "total": 15 }]
}A common and predictable convention — used by JSONKit's JSON to Excel converter — is dot-notation flattening for nested objects (address.city, address.country become their own columns) and joining or JSON-stringifying arrays into a single cell, since an array of primitives fits reasonably as a comma-joined string ("dev, go") but an array of objects (like orders above, a genuine one-to-many relationship) doesn't have a lossless flat representation and is stored as a JSON string in the cell instead.
name | address.city | address.country | tags | orders
Ravi Kumar | Surat | IN | dev, go | [{"id":1,...}]For data with a real one-to-many relationship you want properly tabular (not stringified in a cell), the cleaner approach is exporting two related sheets/tables instead of forcing everything into one flat row — which is exactly the shape JSONKit's Random JSON Generator's multi-table mode produces if you're generating the data yourself rather than converting an existing export.
Going the other direction: Excel to JSON
The reverse conversion reads the first row as column headers and produces one JSON object per subsequent row:
name | price | inStock
MacBook Pro | 2499 | true[
{ "name": "MacBook Pro", "price": 2499, "inStock": true }
]An empty cell becomes null in the output rather than being silently omitted from the object — deliberately, so every record in the resulting array has the same set of keys, which matters if the JSON is headed into a strictly typed language or a schema validator downstream rather than staying dynamically-shaped.
Multi-sheet workbooks
A workbook with several sheets — common when a spreadsheet has grown organically (a "Products" tab, an "Orders" tab, a "Notes" tab someone added later) — needs to convert one sheet at a time, since a single JSON array can only represent one flat table. A sheet picker lets you choose which one, and each converts independently of the others.