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.

JSON Set
InputResult
JSON
Value

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

Entry
JSON Set
Exit
  • Execute + Data
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

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].x does not address the first element — it creates a field literally named items[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

PortWirePayloadNotes
InputinputExecute + Dataexecute_data

Run trigger; its payload is used as the source object when the JSON port is not connected.

JSONjsonDatadata

Source object

ValuevalueDatadata

New value to set

Outputs

PortWirePayloadNotes
ResultoutputExecute + Dataexecute_dataobject

Configuration

FieldTypeDefaultDescription
Pathpathstring$.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.