Parse JSON
Turn a raw JSON string into structured fields that downstream Steps can pick and map directly.
- Use it to
- Turn a raw JSON string into individual fields for downstream Steps
- Find it
- Tools → Data → Convert → Parse JSON
- Cost
- 1 Step credit per execution
- Output
- Parsed fields directly ({{ N.field }}, {{ N.items.0.sku }}) or {{ N.$full_result }}
- Instead
- Inline pipe ({{ 1.rawJson | parse_json }}) or Parse JSON Result toggle on AI Prompt
Keyboard shortcut: t then p
Use it when an earlier step outputs a JSON string wrapped in quotes and braces. This often happens with webhook text fields, API strings, database JSON columns, or .json files. When the data picker shows only the raw string, Parse JSON exposes the inner fields and unescapes \" and \n.
Setting it up
Add the step
Press t+p, or open Tools → Data → Convert in the dock and select Parse JSON.
Select the JSON string
In the Input field, select the data reference that contains your JSON string (for example, the response body from a previous HTTP Request step).
Save and map fields
Save the step. Glow detects the structure of the parsed JSON so downstream steps can pick individual fields.
What it passes on
The Step returns the parsed value directly. It can be a record, list or scalar, depending on the input JSON. Use {{ 4.$full_result }} for the whole value from Step 4, including a scalar or a root-level list.
- A record inside a record is reached with another dot:
{{ 4.customer.name }}. - A list uses the item’s position counting from zero, with either a dot or
square brackets, so
{{ 4.items.0.sku }}and{{ 4.items[0].sku }}both resolve the first item. - Deeper than that follows the same pattern all the way down:
{{ 4.results.2.metadata.tags.0 }}.
Examples to copy
Reading an app’s answer
Suppose an HTTP Request step calls https://api.example.com/orders/12345 and returns the following response body as a string:
{
"order_id": 12345,
"customer": {
"name": "Acme Corp",
"email": "[email protected]"
},
"items": [
{ "sku": "WIDGET-A", "quantity": 10 },
{ "sku": "WIDGET-B", "quantity": 5 }
],
"total": 249.99
}If Parse JSON is Step 4, the example above exposes these fields directly:
| Reference | Value |
|---|---|
{{ 4.order_id }} | 12345 |
{{ 4.customer.name }} | "Acme Corp" |
{{ 4.customer.email }} | "[email protected]" |
{{ 4.items.0.sku }} | "WIDGET-A" |
{{ 4.items.0.quantity }} | 10 |
{{ 4.items.1.sku }} | "WIDGET-B" |
{{ 4.total }} | 249.99 |
You can now use {{ 4.customer.name }} in a Slack message Step, or {{ 4.total }} in a Conditions Step.
The data picker shows these as customer.name and total, without the step number. That is the label, not the reference. Pick the value from the picker and Glow inserts the full form for you.
Limits
| Input Problem | Behavior | How to Handle It |
|---|---|---|
| Malformed JSON | Fails the Step with a parsing error. | Inspect the raw input in the source Step’s Executions tab, or clean reliably malformed text first with Code editor. |
Empty input ("" or missing) | Fails parsing (whereas valid JSON like null, {}, or [] parses without named fields). | Gate optional fields with Conditions using {{ 2.payload | default:"" }} and is not empty before Parse JSON. |
| Very large payloads | Subject to step output and memory limits. | Request only needed fields or paginate at the source. |
- Run
- Select a JSON string in Input and click Run step in Test & Debug
- You should see
- The Step's Executions tab shows the parsed object or list, and downstream Steps can pick individual fields like {{ N.customer.name }}.
What’s Next?
- Reference the newly exposed fields downstream using the Variable Reference Syntax.
- Review the shapes Glow recognizes in Data Types & Structures.