JSON Chain String Pairs (10X) (Soze)
Ten string pairs in one node — when you just want to type keys
- chain_in
- chain_out
The single JSON Chain String Pair forces you to wire a value in - great for dynamic payloads, annoying when you just want to hardcode a dozen static keys into an object. JSON Chain String Pairs (10X) (Soze) is the opposite workflow: ten name_N / value_N pairs, all plain text widgets, all typed directly on the node. It exists to keep the widget surface manageable when a long chain of single-pair nodes would clutter your graph.
This is the "authoring" node of the Soze JSON family. If you're building a static config block, a fixed set of metadata fields, or a template payload where most keys never change, this is what you reach for. It outputs a normal JSON_PAIRS chain, so it plugs into everything else the family does.
How it works
Both the names and values are STRING widgets - no forceInput, so you type them straight in. On execution it walks all ten rows and appends every pair whose name_N is non-blank; half-filled nodes are fine, blank rows are just skipped. One subtlety: because values are strings, everything lands in the JSON as a string. If you need "count": 3 as a real number, use the typed pair nodes (Int/Float/Bool Pair) instead of this one.
The source documents two patterns worth stealing:
- Siblings - feed
chain_outinto the next pair node'schain_in, or straight into JSON Generate. Your ten keys land at the same nesting level as whatever's already in the chain. - Sub-values - feed
chain_outinto a JSON Object Pair'snested_chaininstead. The Object Pair wraps all ten pairs under one named property - the fast way to build ameta: { … }block with ten keys in it.
Inputs and outputs
- name_1 … name_10 - required string widgets, the keys.
- value_1 … value_10 - required string widgets, the values.
- chain_in - optional
JSON_PAIRS; append these pairs to an existing chain, or leave empty.
Output: chain_out.
String Pairs (10X) → JSON Generate
with name_1="title", value_1="My Image" → {"title":"My Image"}.
Installing it
Part of the Soze pack:
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt
Restart ComfyUI, or search ComfyUI_Soze in ComfyUI Manager.
Gotchas
Remember the "everything is a string" caveat - this node is a shortcut for static string data, not a replacement for the typed pairs. If you mix this node's output with typed pairs in one chain, both work fine together (the chain is just tuples), so the pragmatic split is: numbers and booleans through typed nodes, the rest through the 10X. And if you leave a name_N blank, the whole row is ignored, which is the feature that makes "just fill in what you need" painless.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| name_1 | STRING | — | |
| value_1 | STRING | — | |
| name_2 | STRING | — | |
| value_2 | STRING | — | |
| name_3 | STRING | — | |
| value_3 | STRING | — | |
| name_4 | STRING | — | |
| value_4 | STRING | — | |
| name_5 | STRING | — | |
| value_5 | STRING | — | |
| name_6 | STRING | — | |
| value_6 | STRING | — | |
| name_7 | STRING | — | |
| value_7 | STRING | — | |
| name_8 | STRING | — | |
| value_8 | STRING | — | |
| name_9 | STRING | — | |
| value_9 | STRING | — | |
| name_10 | STRING | — | |
| value_10 | STRING | — | |
| chain_inopt | JSON_PAIRS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| chain_out | JSON_PAIRS | — |