Skip to content

JSON field extractor — pull one field out of a JSON array

Paste a JSON array and a field path — nested or wildcard included — to get a flat array of just those values. Runs entirely in your browser. When a response carries far more fields than you need and you only want one of them as a flat list to paste into a spreadsheet or a fixture, this is the page for that.

When pulling out one field is what you need

  • Two hundred orders came back and you only want to know whether the ids repeat.
  • You need every email or phone number from one response pasted into a spreadsheet.
  • You want one nested sub-field from each element flattened into a plain array to use as fixture data.
  • You need to find out which records are missing a field entirely.
  • You do not have jq to hand, or simply do not want to open a terminal to read one field.

What this tool does

Paste a JSON array on the left, enter a field path, and get back a flat array of just the values at that path. The classic case: paste [{"name": "John", "age": 14}, {"name": "Mary", "age": 20}], enter name, and the result is ["John", "Mary"]. Everything recomputes as you type — there is no button to press.

Path syntax reference

SyntaxMeaningExample
name / .nameA plain object property.address.city
[0]An array index.tags[0]
['key'] / ["key"]A property whose name has a space, a dash or a dot in it.meta['created-at']
[*]Every item in an array, flattened into the output.roles[*].name

These pieces combine. A path is read left to right, one step at a time, starting from each element of the pasted array.

Three examples, from simple to complex

A flat field

Input [{"name": "John", "age": 14}, {"name": "Mary", "age": 20}] with path name gives ["John", "Mary"].

A nested field

Input [{"name": "John", "address": {"city": "Taipei"}}] with path address.city gives ["Taipei"]. Each dot walks one level deeper into the object.

A wildcard fan-out

Input [{"roles": [{"name": "admin"}, {"name": "editor"}]}, {"name": "Alan"}] with path roles[*].name gives ["admin", "editor"]. The first element contributes two values, the second has no roles at all and contributes none — the output can end up shorter or longer than the input array.

What happens when a field is missing

Missing values are skipped, not replaced with null. If an element does not have the field, or a step in the path hits the wrong type, that element simply contributes nothing to the output. The stats line above the result — "Extracted N values — skipped M of K elements" — makes this visible instead of leaving you to guess why the output array is a different length than the input.

Why the pasted JSON must be an array

The root of what you paste has to be a JSON array, because the whole point of this tool is to run the same path against every element and collect the results. If you only have a single object, wrap it in square brackets — {"name": "John"} becomes [{"name": "John"}] — and the path still works the same way.

Does anything you type leave the browser

No. Parsing and extraction both run in your browser, and nothing you paste is uploaded anywhere. That is true of every tool on this site — see the privacy policy for the details.

Frequently asked questions

Can I extract more than one field at a time?
Not in a single run. Change the path and re-run for a second field — the whole computation is instant, so switching back and forth is cheap.
Does this support full JSONPath?
No. It is a small, purpose-built subset: dot notation, bracket indices, quoted keys, and a single wildcard. There is no filtering, no recursive descent, and no expressions.
What if elements in my array have different shapes?
Each element is evaluated on its own. One missing a field just gets skipped — it does not affect the others or stop the extraction.
Can I export the result as CSV?
Not from this tool — it only extracts a single field, and a flat list of values is already valid JSON, so a JSON array is what you get.
Is there a size limit on the pasted JSON?
Only what your browser tab's memory allows. Very large pastes will make typing feel sluggish since everything reparses live.