A JSON key extractor lists the field names in a JSON value after JSON.parse. It does not pretty-print the payload and it does not draw a tree. You get a text list you can copy into a ticket, a mapping sheet, or a TypeScript type sketch. This JSON Key Extractor runs in the browser. Nothing is uploaded.
Three modes answer three questions. Top-level keys are the properties on the root object only. All unique keys walks nested objects and arrays and prints each object key once, in the order it was first seen. Key paths show where those keys sit, with arrays written as [] so two users do not produce two copies of the same field. That path notation is a structural summary. It is not JSONPath, and this page does not evaluate JSONPath expressions.
Use the extractor when you have an unfamiliar API body or config file and you need the vocabulary of the payload, not a formatted reprint. If the string might be illegal, validate first. If you still cannot see nesting, open the JSON Viewer. Come back here when you want a list.
users array. Copy output writes the list. Clear empties both boxes.Invalid JSON is not extracted. The status shows the browser parse error and the output box is cleared. A root string, number, boolean, or null has no object keys; the tool says so instead of throwing. A root array has no top-level object keys — switch to unique keys or key paths.
This nested array is the example on the page:
{
"users": [
{
"id": 1,
"name": "John",
"roles": [
{
"name": "admin"
}
]
},
{
"id": 2,
"name": "Jane"
}
]
}
Top-level keys: users.
All unique keys, first-seen: users, id, name, roles. The second user’s id and name are not repeated. The name inside roles is the same key as the user’s name, so it appears once.
Key paths:
users
users[].id
users[].name
users[].roles
users[].roles[].name
Indexes are not listed. users[0].name and users[1].name collapse to users[].name. That is the point of the notation.
Top-level is a snapshot of the root object. It is the right check when you only care whether the envelope is data, meta, and included. It will not see sku three levels down.
All unique keys is the general-purpose list. It is what you paste when someone asks “what fields are in this payload?” It does not tell you that name is both a user and a role. Key paths do.
Key paths are for mapping. A Magento or WordPress integration that must read users[].roles[].name needs the path, not a bag of tokens. Arrays of primitives become a path that ends in [], for example tags[].
JSON.parse owns the value. Duplicate keys in the source text are not recoverable after parse; the last property wins in the browser.If you need indentation, use the JSON Formatter. Extraction does not rewrite the input box.
For a walk-then-extract procedure, see how to work with nested JSON.
Parse and walk run in this browser. The payload is not sent to YallaSolve for this tool. Clear the tab if you pasted customer fields.
Default mode lists each object key once, in first-seen order. Key paths use a simple notation such as users[].name — not JSONPath. Duplicate keys in the source text cannot be recovered after JSON.parse.
No. Key paths use a simple structural notation such as users[].name. The tool does not evaluate JSONPath queries.
JSON.parse resolves object properties. Duplicate keys in the source text cannot be listed after parse; the last property wins in the browser.
The key name is printed once, in first-seen order. Use Key paths if you need both users[].name and users[].roles[].name.
Top-level keys belong to a root object. For a root array, use All unique keys or Key paths (paths start with []).