All posts

Convert a JSON Contact Export to CSV (Nested Fields, Lists and JSON Lines)

··3 min read

To convert a JSON contact export to CSV, find the array that holds the records, write one row per record, and flatten nested fields into dot-path columns. The JSON to CSV converter does all three in your browser: it picks the array even when it's wrapped under data or results, joins tag lists into one cell, and gives lists of emails or phones numbered columns. Then the CSV opens in Excel or goes into an importer.

Sources: RFC 8259 (the JSON format) and jsonlines.org (JSON Lines), read 3 November 2026.

Step 1: find the records

A CSV is a table; a JSON export is usually a wrapper with the table inside it:

{ "results": [ { "email": "ana@example.com", "company": { "name": "Contoso" } } ],
  "paging": { "next": { "after": "100" } } }

The rows are in results. Other APIs use data, items, contacts or members. The converter scores every array of objects in the document and picks the likely one; if it picks wrong, choose another path from the list it shows.

Step 2: decide how nested fields become columns

JSON CSV columns
"company": {"name": "Contoso"} company.name
"tags": ["vip", "trial"] tags = vip; trial
"emails": [{"type": "work", "value": "..."}, ...] emails.0.type, emails.0.value, emails.1.value...

You set how many numbered columns a list of objects gets; anything beyond stays as JSON text in an emails.more column so nothing is lost. Columns appear in the order they're first seen, and a field only some records have is blank elsewhere. Numbers and true/false are written as they appear in the JSON.

Step 3: handle paging and JSON Lines

An API returns a page at a time, so a full export is several files. Convert each and join them with CSV merge, or paste the records as JSON Lines, one object per line, which the converter reads directly.

Step 4: shape the CSV for where it's going

  1. Trim the columns. API exports carry IDs, timestamps and internal fields an importer doesn't need. Delete, rename and reorder them with the CSV column editor.
  2. Keep IDs intact in Excel. Long numeric IDs and zip codes get rounded or lose zeros on a double-click; see open a CSV in Excel without losing leading zeros.
  3. Dedupe. Contacts pulled from several endpoints or pages can repeat; remove duplicate emails.

Limits

Records nested more than six levels deep aren't searched for automatically; pick the path instead. The whole file sits in browser memory while it converts, several times its size, so a very large export may be easier to convert in parts. The converter doesn't turn CSV back into JSON. And it converts data; it doesn't check whether the addresses in it still receive mail.

Where SimpleVerifier fits

If you're pulling contacts from an API to verify them, you can skip the CSV step and send them to our bulk verification API instead; bulk verify a CSV with the API shows the flow. For a one-off, upload the CSV at /verify and get valid, risky and invalid files back with your columns kept. The first 100 checks are free with a Google sign-in. Pro is $39 a month with the first 100,000 checks a month at full speed, then slower, never cut off. API calls are metered separately per plan; see pricing.

Common questions

How do I convert a JSON file of contacts to CSV?

Find the array of contact objects, write one row per object, and turn each field into a column, flattening nested fields into names like company.name. A browser tool such as SimpleVerifier's JSON to CSV converter finds the array automatically, even inside data or results, and downloads the CSV.

What happens to nested JSON when it becomes CSV?

A CSV is flat, so nested objects become columns named by their path (address.city) and lists need a rule: plain values joined into one cell, or numbered columns such as emails.0.value and emails.1.value for lists of objects.

What is JSON Lines?

A format with one complete JSON value per line, described at jsonlines.org. Bulk APIs and log exports use it because it can be streamed. Each line becomes one CSV row.

Why does my JSON fail to parse?

The usual causes are a trailing comma after the last item, single-quoted strings, or a file cut off mid-download. RFC 8259 allows only double-quoted strings and no trailing commas.

Check your list before you send

Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.