How to convert JSON to CSV on iPhone
CSV is a grid: rows and columns, one value per cell. JSON is a tree. Converting a tree into a grid only works when the tree is already flat — and being straight about that saves you an hour of confusion.
The one shape that works
Convexy converts JSON that is an array of objects at the top level. Like this:
[
{ "name": "Ada", "city": "London", "age": 36 },
{ "name": "Grace", "city": "New York", "age": 45 }
]which becomes:
age,city,name
36,London,Ada
45,New York,GraceEach object is a row. The columns are the union of every key found across all the objects, sorted alphabetically — so if some records have a key that others lack, the column still appears, and the records missing it get an empty cell. Nothing is dropped for being inconsistent.
Values that contain a comma, a quote or a newline are wrapped in quotes and their internal quotes doubled, which is the correct CSV escaping. The output opens cleanly in Excel, Numbers and Google Sheets.
If the top level of your JSON is not an array of objects, the conversion fails with an error. It does not half-work, and it does not invent a structure for you. A single object at the top, an array of strings or numbers, an array of arrays, or a bare value — all rejected. That is deliberate: producing a plausible-looking CSV from data that does not fit a grid is worse than refusing, because you would not notice.
Why nesting is the whole problem
A CSV cell holds one value. JSON values can be objects and arrays, which hold more values, which can hold more values. There is no honest way to put a tree into a cell.
Real-world JSON is full of this:
[
{
"name": "Ada",
"address": { "city": "London", "zip": "N1" },
"tags": ["admin", "beta"]
}
]Every tool has to pick a lie to tell here. The common ones are flattening (invent columns called address.city and address.zip, and give up on tags having any number of entries) or dropping the nested fields entirely.
What Convexy does: the record still converts, and the nested value is written into its single cell as a text dump of the structure. You will not lose the row, and you will not silently lose the field — but what lands in that cell is a representation of the object, not a clean value, and it is not something you would want to hand to a spreadsheet user. Treat a nested field as a signal that the file needs reshaping before conversion, not after.
The practical fix, if you control the JSON: flatten it at the source into one level of keys and simple values. That is the shape CSV was designed for, and it is the only shape that converts without a compromise.
The API-response problem
The most common reason this conversion fails is that the data you want is not at the top of the file. API responses almost always wrap it:
{
"status": "ok",
"page": 1,
"results": [ { ... }, { ... } ]
}The top level here is an object, not an array, so Convexy rejects it — the array you actually want is buried under results. Convexy will not go looking for it, and will not guess which key holds your records. Extract the array yourself first — pull out the value of results into its own file so the file begins with [ — and then convert. It is a two-second edit in any text editor, and it means you decided which data was the data, rather than a converter guessing.
Column order, and other small honesties
- Columns come out alphabetical, not in the order the keys appear in the JSON. JSON objects have no guaranteed key order, so there is no original order to preserve. Reorder them in the spreadsheet if it matters.
- Missing keys become empty cells, so every row has the same number of columns and the file is a valid grid.
- The file is written as UTF-8. If Excel on Windows shows mojibake where the accents should be, use Excel's Import Data flow and choose UTF-8 rather than double-clicking the file — that is Excel's fault, not the file's.
JSON exports tend to be database dumps, API pulls and analytics extracts — the material you should not be pasting into a free web tool. Convexy converts on the device: no upload, no account, no server, and it works in Airplane Mode. There is nowhere for a copy of your data to persist.
Going the other way
CSV to JSON is supported and has its own set of honest caveats — chiefly that every value comes out as a string, because CSV has no types to preserve. Note that a JSON to CSV to JSON round trip will not give you back your original file: the types and any nesting are gone after the first hop, and CSV cannot carry them.
How to do it
-
Check the shape of your JSON
Open the file. If it starts with a square bracket and the entries are objects, it will convert. If it starts with a curly brace, the records are nested inside a wrapper and you must extract the array first.
-
Flatten any nested fields
Objects and arrays inside a record cannot become spreadsheet cells. Reshape them into simple key-value pairs at the source if you want a clean grid.
-
Bring the JSON into Convexy
Tap Browse files and pick the .json, or share it into the app from Files or wherever it was downloaded.
-
Choose CSV
Convexy offers only what a JSON file can become: CSV and TXT. Tap CSV.
-
Convert, then open it in a spreadsheet
Tap Convert, then save or share the file. It opens directly in Numbers, Excel or Google Sheets. Columns are alphabetical; reorder them there if you need to.
Common questions
Why did my JSON fail to convert?
Almost certainly because the top level is not an array of objects. If the file begins with a curly brace, your records are wrapped inside a container object — typical of API responses, where the rows sit under a key like results or data. Convexy will not guess which key holds your records. Extract that array into its own file so it begins with a square bracket, then convert.
What happens to nested objects and arrays?
They cannot be represented in a spreadsheet cell, so there is no good outcome. Convexy keeps the row and writes a text dump of the nested structure into the single cell rather than dropping the field silently — which means you can see that something did not fit, instead of discovering it missing later. If the nested data matters, flatten the JSON before converting.
What if some records have keys that others do not?
That is handled properly. The columns are the union of every key across every record, so nothing is dropped, and records lacking a key get an empty cell. You end up with a rectangular grid where every row has the same columns.
Why are my columns in alphabetical order?
Because a JSON object has no guaranteed key order — the order you see in the file is an artefact of how it was written, not part of the data. Rather than pretend to preserve an order that is not defined, the columns are sorted. Reorder them in your spreadsheet.
Can I convert JSON straight to Excel (XLSX) or a Numbers file?
No. Convexy does not produce XLS, XLSX or Numbers files. It produces CSV, which every spreadsheet application opens, and from which you can save as XLSX in one step in Excel or Numbers if that is the format you need.
Is my data uploaded to convert it?
No. Convexy has no backend at all. The conversion is done by your device and works with the network off — which is the entire point when the file is a database export or an analytics pull that you are not permitted to paste into a website.