πͺ Show any to JSON
Show Any to JSON (Crystools)
- any_value
- string
Same basic idea as Show any, but with two differences that matter: it tries to format whatever you feed it as JSON before displaying it, and it actually gives you a STRING output you can wire onward - Show any is a dead end by design, this one isn't.
Why you'd reach for it
Reach for this over plain Show any specifically when what you're inspecting is naturally structured data - a JSON output from Metadata extractor, from Read JSON file, or from any custom node returning something dict-shaped. You get it pretty-printed rather than a flat repr, and because it's got a real output socket, you can capture that formatted text and use it elsewhere: feed it into a Primitive string multiline as a scratch copy, save it, or pass it downstream to whatever else wants a string.
That output socket is really the whole reason to pick this node over Show any once you already know what you're looking at is JSON-shaped - you're not just debugging, you're also grabbing a usable formatted copy of the data in the same step, which saves a round trip of "inspect it, then build a second node to actually use it."
How it works
At runtime it attempts to convert whatever's connected into JSON and shows that formatted result on the node face. The same text is also what comes out the output socket - display and output are the same content, just one shows it in-graph and the other lets you route it further.
Inputs and outputs
One optional input: any_value (wildcard type). One output: string - also rendered on the node itself.
Installing it
Through ComfyUI Manager, search crystools. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/crystian/ComfyUI-Crystools.git
cd ComfyUI-Crystools
pip install -r requirements.txt
Restart ComfyUI. No models or extra dependencies for this node.
Common issues
"Try to convert it to JSON" is the operative phrase, straight from how the node's documented - it's a best-effort formatter, not a strict validator. Feed it something that isn't JSON-shaped to begin with - a raw tensor, an arbitrary Python object without a clean dict representation - and you'll get whatever fallback string representation it can manage rather than a clear error explaining it wasn't JSON in the first place. If the output looks garbled or half-formatted, that's almost always the input value not being JSON-shaped, not a bug in this node.
If you genuinely just want to eyeball a value without caring about JSON formatting - a plain number, a short string, something that isn't structured data at all - plain Show any is the simpler tool and won't try to reshape it into something it isn't.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| any_valueopt | * | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| string | STRING | β |