A drop in, syntax highlighted, collapsible JSON viewer for Unity editor GUI (EditorWindow or custom inspectors). Editor only; no runtime or build footprint.
usingShovelTools.EditorTools;privateJsonView_json;voidOnGUI(){_json??=newJsonView();if(GUILayout.Button("Load"))_json.SetJson(someJsonString);_json.Draw();}SetJson(string)parses once and stores the data. It no ops when the string is unchanged, so calling it every OnGUI is fine.Draw()renders the tree as indented, color coded JSON: click a key to collapse or expand it, drag the grip bar to resize, and use the toolbar to copy or expand/collapse everything.- The toolbar Text toggle (or the
TextModeproperty) switches to plain selectable text, like the console: drag to highlight any span (a horizontal scroll bar appears for long lines) and copy just that part, clean and uncolored.
Pass a JsonViewConfig, or edit view.Config after construction. Every field has
a default, so override only what you need.
_json=newJsonView(newJsonViewConfig{Collapsible=false,Height=320,StringColor=Color.cyan,});| Field | Default | Meaning |
|---|---|---|
KeyColor, StringColor, NumberColor, BoolColor, NullColor, PunctuationColor | dark skin tints | per token text colors |
Collapsible | true | objects and arrays render as foldouts |
ShowToolbar | true | copy plus expand/collapse all |
Resizable | true | drag bar resizes the height (set false to let an outer layout own Height) |
Height, MinHeight, MaxHeight | 200, 60, 2000 | view height in pixels |
IndentWidth | 16 | pixels of indent per nesting level |
- Invalid JSON renders as plain text with a warning;
SetJsonnever throws, so a caller does not have to validate first. - Rendering is immediate mode (one control per visible node). For very large payloads, collapse big arrays or objects to keep the GUI responsive.