Join JSON List (PixNodes)
Collect scattered values into one JSON list
- AnyData_1
- json_list
You've got a handful of values scattered across your graph - a few prompts, a couple of integers, some JSON objects - and you want them gathered into a single list so one downstream node can process them all. Join JSON List is the collector: wire in whatever you've got, one port per item, and it hands back a single JSON list.
The name undersells what it actually does, because the node is smart about what you feed it. Give it a JSON string and it parses it for you, so you don't end up with a list containing one escaped string inside another string - the classic double-encoding mess that plagues hand-built JSON. This is the pack's core JSON philosophy in one node: inputs can be structured objects or JSON text, and the node normalizes them.
How it works
The input surface is dynamic. The schema declares a single required port, AnyData_1, and the frontend lets you add more (AnyData_2, AnyData_3, …). At execution the node collects everything wired in, sorts by that index so the order is deterministic, and skips any None. For each value it then applies the smart-parse: if it's a string that looks like a JSON object or array, it's parsed with json.loads; if parsing fails it keeps the raw string rather than choking.
The output, json_list, is a plain Python list on a JSON port. And here's the pack-wide gotcha you need to internalize: since v1.0.8 this pack removed its string-output ports - a JSON port carries a Python object, not a JSON string. So don't wire this directly into a text box and expect pretty formatted JSON. If you genuinely need text out, run the result through the pack's JSON Unpacker.
When you'd reach for it
The natural companions are the pack's JSON creation nodes: build a JSON object per iteration of a loop, then collect them all into a list with this node. It also composes well with Join Json Object - list on one side, object on the other, depending on which shape the thing you're feeding wants. Downstream it pairs with the pluck/slice tools to do something with the collected rows.
Install
Part of Comfyui-PixNodes. ComfyUI Manager → search "PixNodes" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/pixixai/Comfyui-PixNodes
then restart. (The README's manual-install snippet points at the wrong repo, ComfyUI-AlignLayout - use the URL above.) No models, no dependencies beyond what the pack already needs.
The one thing that bites
Because the output is a structured object, any node expecting a STRING won't take it directly. And if you connect a plain scalar - a string, an int - it lands in the list as-is, which is usually what you want, but means a mixed list can hold dicts and strings together. That's fine for JSON, but downstream consumers that assume uniform types will surprise you. Keep your inputs roughly the same shape and this node stays boring, which is exactly what a collector should be.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| AnyData_1 | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| json_list | JSON | — |