All nodes/Data/JSON
JSON Set
Sets a value at a JSONPath path in an object. Takes the source JSON (the 'json' port) and the new value (the 'value' port), and returns the modified object. Path format: $.user.name.
Type in the graph: json_set
Exec
An error branch can be enabled (expose_error_output) to handle failures on their own path.
Ports can be split into separate execution and data handles.
Try it
Minimal working workflow
- Execute + Data
Runs as pasted
When to use it
The node changes one field of an object and returns the modified copy: stamp a status on an API response, add a session id to a request body, replace a field before passing it on. When several fields are involved and they already form an object, that is JSON Merge. When you need text rather than an object, use Template. When the transformation is more than one assignment — walking an array, computing, renaming keys — reach for JavaScript Code.
How it works
The source object arrives on the “JSON” port. When that port is unconnected the node falls back to whatever came into “Input”, so the object can simply travel along the main chain. The new value arrives on the “Value” port.
The path is written with dots: user.name or $.user.name — the leading $. is optional.
Missing objects along the path are created, so user.name applied to an empty object yields
{"user": {"name": …}}. The source is not mutated: a copy travels downstream, and the node
above keeps returning what it returned before.
Common mistakes
- Array indexes do not work.
items[0].xdoes not address the first element — it creates a field literally nameditems[0]. For arrays, use the JavaScript Code node. - The path is not a template. The “Path” field is taken literally,
{{ … }}is not substituted there — a computed path has to be built in JavaScript Code. - An unconnected “Value” writes an empty value. The node still succeeds: the field ends up
null, and the error surfaces somewhere below. - When the path runs into a non-object, nothing is written. If an intermediate segment turns out to be a string or an array, the node returns the source object unchanged.
- With no source object at all the node fails. If neither “JSON” nor “Input” delivered anything, the step stops — better than inventing an object out of nowhere.
Inputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Inputinput | Execute + Dataexecute_data | — | Run trigger; its payload is used as the source object when the JSON port is not connected. |
JSONjson | Datadata | — | Source object |
Valuevalue | Datadata | — | New value to set |
Outputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Resultoutput | Execute + Dataexecute_data | object |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
Pathpath | string | $.field | Dot-path to the field, e.g. user.name or $.user.name (the leading $. is optional). Array indexes are not supported. |
Shared fields
Every node has these three — the platform adds them, not the node author.
expose_error_output— When enabled, show an execution output to connect nodes that run if this step fails.split_ports_in— Show separate execution and data input handles instead of one combined port.split_ports_out— Show separate execution and data output handles instead of one combined port.