Typed Parquet records
- Input
- 771-byte Parquet file generated from two rows with id, created_at, active, amount, note, optional.
- Output
- 331-byte JSON included
"id": 101,"active": true,"amount": 1234.5, and"optional": nullin the first object.
Parquet to JSON keeps the data record-oriented while replacing columnar binary storage with a readable array of objects.
From real runs
| Element | Result | What happens |
|---|---|---|
| Record shape | Changed | The Parquet table became a top-level JSON array with one object per row and property names from the column schema. |
| Numbers | Kept | Integer and floating-point values read back as JSON numbers, including id 101 and amount 1234.5. |
| Booleans | Kept | Boolean cells stayed JSON booleans, visible as "active": true and "active": false in the output. |
| Nullability | Kept | Nullable Parquet fields became JSON null values rather than empty strings or omitted properties. |
| Timestamps | Changed | Timestamp values were serialized as ISO strings because JSON has no native timestamp scalar. |
| Column metadata | Lost | Parquet physical types, compression, encodings, and row group boundaries are removed from the JSON output. |
| Formatting | Changed | The API returned pretty-printed JSON with two-space indentation and a trailing newline for review. |
The Parquet table became a top-level JSON array with one object per row and property names from the column schema.
Integer and floating-point values read back as JSON numbers, including id 101 and amount 1234.5.
Boolean cells stayed JSON booleans, visible as "active": true and "active": false in the output.
Nullable Parquet fields became JSON null values rather than empty strings or omitted properties.
Timestamp values were serialized as ISO strings because JSON has no native timestamp scalar.
Parquet physical types, compression, encodings, and row group boundaries are removed from the JSON output.
The API returned pretty-printed JSON with two-space indentation and a trailing newline for review.
"id": 101, "active": true, "amount": 1234.5, and "optional": null in the first object."amount": null, "note": "Bob's sample", and "optional": "nullable" in the same record.We converted our Apache Parquet sample (816 B) with Table engine on 2026-09-11. It took 1 ms and produced a 614 B JSON file, 25% smaller than the input. The engine raised no warnings.
Input · sample.parquet · 816 B
Parquet file (PAR1 magic present)
Output · sample.json · 614 B
Array of 4 objects; keys: company, stage, arr, owner, close_date
First lines of the output
[
{
"company": "Northwind Traders",
"stage": "Proposal",
"arr": 48000,
"owner": "R. Ayers",
"close_date": "2026-10-14T00:00:00.000Z"
},
{
"company": "Contoso Ltd",
"stage": "Negotiation",
"arr": 120000,
"owner": "P. Ng",
"close_date": "2026-09-30T00:00:00.000Z"
},
{
"company": "Fabrikam",
"stage": "Qualified",
…Python pandas
python - <<'PY'
import pandas as pd
pd.read_parquet("in.parquet").to_json("out.json", orient="records", indent=2, date_format="iso")
PYpandas may emit epoch timestamps unless date_format is set, and very large files will load into memory.
The HTTP API and the MCP server run the exact engine this page uses (Table engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=parquet&to=json.
curl -X POST https://filetypeconverters.com/api/v1/convert \
-H "Authorization: Bearer $FTC_API_KEY" \
-F "file=@input.parquet" -F "from=parquet" -F "to=json" \
-F 'options={"encoding":"utf-8"}' \
--output output.json| Key | Applies to | Type | Default |
|---|---|---|---|
| encoding | Reading Apache Parquet | utf-8 · latin1 | utf-8 |
| delimiter | Writing JSON | string | , |
| newline | Writing JSON | · | |
| sheetName | Writing JSON | string | |
| dialect | Writing JSON | postgres · mysql · sqlite | postgres |
| tableName | Writing JSON | string | data |
| createTable | Writing JSON | boolean | true |
/convert/parquet-to-csv when the next step is Excel, a CSV-only importer, or a manual spreadsheet review.Yes. The verified output wrote nullable fields as JSON null. It did not replace them with blanks or drop those keys.
JSON has strings, numbers, booleans, arrays, objects, and null, but no timestamp type. The converter emits timestamp values as ISO strings.
No. This pair writes one JSON array. Use a JSONL target when each row must be a separate line for streaming tools.