Zum Inhalt springen
    WingoUI
    KomponentenVorlagenDokuPreiseKI-AgentenBlogChangelog
    1. Startseite
    2. Blog
    3. Komponenten-Guides
    4. React JSON Viewer: Suche, Pfade kopieren, große Payloads
    Read in English
    1. Blog
    2. Komponenten-Guides
    3. React JSON Viewer: Suche, Pfade kopieren, große Payloads
    Komponenten-Guides
    Komponenten-Guides

    React JSON Viewer: Suche, Pfade kopieren, große Payloads

    SR
    Serban Rusu · Gründer von Wingo UI
    16. Okt. 2026 · 9 Min. Lesezeit

    Auf dieser Seite

    0%
    1. Was muss ein React JSON Viewer können?
    2. Wie durchsuche ich einen JSON-Baum?
    3. Wie kopiere ich einen Wert oder seinen Pfad?
    4. Welche Props des JSON Viewers sind am wichtigsten?
    5. Ist der JSON-Baum barrierefrei?
    6. Wie verhält er sich auf dem Handy?
    7. Wie rendere ich sehr große JSON-Payloads?
    8. Gibt es eine react json view alternative, die noch gepflegt wird?
    9. Wann reicht ein Code Block?
    10. Wie füge ich den JSON Viewer zu einem Next.js-Projekt hinzu?
    11. Häufige Fragen
      1. Wie zeige ich JSON in React an?
      2. Wird react-json-view noch gepflegt?
      3. Wie durchsuche ich einen JSON-Baum in React?
      4. Schafft ein React JSON Viewer 10.000 Einträge?
      5. Kann ich einen JSON-String direkt an den Viewer übergeben?

    Kurz gesagt

    Ein guter React JSON Viewer zeigt die Payload als aufklappbaren Baum, färbt Werte nach Typ und hat eine Suche, die jeden Zweig mit einem Treffer öffnet, statt nur Zeilen zu markieren, die schon sichtbar sind. Er sollte außerdem einen Wert oder seinen Pfad kopieren (data.items[0].name oder ein JSON Pointer), auf dem Handy bedienbar bleiben und bei Payloads mit Tausenden Einträgen nur die sichtbaren Zeilen rendern. Der JSON Viewer von Wingo UI erledigt all das, du übergibst nur das data-Prop.

    Veröffentlicht am 16. Okt. 2026

    Du hast eine Webhook-Payload, eine API-Antwort oder die Eingabe eines KI-Tool-Calls und willst sie in einem Admin-Screen zeigen, damit jemand das eine Feld findet, das schiefgelaufen ist. Ein roher Dump mit JSON.stringify funktioniert, bis die Payload 40 Keys und drei Ebenen Verschachtelung hat. Ein React JSON Viewer macht aus diesem Dump einen Baum, den man aufklappen, durchsuchen und kopieren kann. In diesem Artikel: was die Komponente können muss, welche Props im JSON Viewer von Wingo UI zählen, wie er sich auf dem Handy und mit Arrays von 10.000 Einträgen verhält und wie er im Vergleich zu den Paketen abschneidet, die die meisten zuerst finden. Wir bauen Wingo UI, sind also nicht neutral; Aussagen über andere Bibliotheken belegen wir mit Links auf deren eigene Doku.

    Was muss ein React JSON Viewer können?

    Er muss Payloads jeder Größe auf jedem Gerät aufklappbar, durchsuchbar und kopierbar machen. Verschachtelte Daten anzuzeigen ist der einfache Teil. Unsere Checkliste, die auch als fairer Test für jede Bibliothek taugt:

    • Auf- und Zuklappen von Objekten und Arrays, mit einer Vorschau auf den Inhalt eines geschlossenen Zweigs (die ersten Keys oder die ersten Werte und eine Anzahl).
    • Farben nach Typ: Strings, Zahlen, Booleans, null und Datumswerte sollten unterschiedlich aussehen, denn die Frage „Ist das 0 oder "0"?“ ist beim Debuggen einer API schon die halbe Arbeit.
    • Eine Suche, die Zweige öffnet. Ein Treffer in einem geschlossenen Zweig bringt nichts, wenn der Viewer nur Zeilen markiert, die schon gerendert sind.
    • Einen Wert oder seinen Pfad kopieren, damit der Pfad direkt in den Code oder in einen Bug-Report wandern kann.
    • Große Payloads, die den Tab nicht einfrieren: seitenweise Anzeige langer Arrays und Virtualisierung langer Bäume.
    • Tastatur und Screenreader: ein einziger Tab-Stopp, Pfeiltasten und echte Baum-Semantik.
    • Handys: Zeilen, die groß genug zum Tippen sind, und Aktionen, die nicht von Hover abhängen.

    Installier die Komponente und gib ihr Daten:

    bash
    npx wingo-ui@latest add json-viewer
    tsx
    import { JsonViewer } from "@/components/ui/json-viewer";
    export function WebhookPayload({ payload }: { payload: unknown }) {
    return <JsonViewer data={payload} rootName="webhook" defaultExpandDepth={2} fileName="webhook" />;
    }

    Die Komponentendatei beginnt mit "use client". Du kannst sie also direkt aus einer Server Component rendern, solange data serialisierbar ist und du keine Funktionen übergibst. Kommt der Wert als Text aus einer Datenbankspalte, parse ihn vorher: Der Viewer parst keine Strings, die JSON enthalten, und eine ungeparste Payload erscheint als ein einziger langer String.

    Der Webhook öffnet sich zwei Ebenen tief. Öffne invoice.lines und dann eine Zeile: Geschlossene Zweige zeigen eine Vorschau ihres Inhalts und eine Anzahl. Fahr mit der Maus über eine Zeile, um ihren Wert oder Pfad zu kopieren
    $ npx wingo-ui@latest add json-viewer
    ProDoku: JSON Viewer

    Wie durchsuche ich einen JSON-Baum?

    Die Suche läuft über die gesamte Payload und öffnet jeden Zweig, der einen Treffer enthält. Genau das erwarten die meisten, die nach einem React JSON Viewer mit Suche googeln. Tipp in die Toolbar oder drück Strg+F (⌘F auf dem Mac), während der Fokus im Viewer liegt. Jeder passende Key oder Wert wird markiert, die Zweige mit Treffern gehen auf, und der erste Treffer wird in die Mitte des Panels gescrollt. Enter und Shift+Enter springen durch die Treffer, der Zähler zeigt „2 of 5“, und Escape leert die Suche. Groß- und Kleinschreibung sowie diakritische Zeichen werden ignoriert, und Zahlen, true und null werden über ihre Textform gefunden.

    Zwei Props steuern das. searchIn beschränkt die Suche auf "keys", "values" oder "both" (der Standard), und searchable={false} entfernt das Suchfeld, wenn die Payload klein ist. Willst du eine Suche aus deiner eigenen UI starten, zum Beispiel aus einer Logzeile, die eine Rechnungsnummer nennt, holst du dir die API über setApi:

    tsx
    "use client";
    import { useEffect, useState } from "react";
    import { JsonViewer, type JsonViewerApi } from "@/components/ui/json-viewer";
    export function EventInspector({ event, highlight }: { event: unknown; highlight?: string }) {
    const [api, setApi] = useState<JsonViewerApi | null>(null);
    useEffect(() => {
    if (highlight) api?.search(highlight);
    }, [api, highlight]);
    return <JsonViewer data={event} rootName="event" searchIn="values" setApi={setApi} />;
    }

    Dieselbe API hat expandAll, collapseAll, expandToDepth(depth), expandPath(path) und scrollToPath(path). expandPath(["invoice", "lines"]) öffnet diesen Zweig samt seinen Vorfahren. So verlinkst du aus einer Fehlermeldung direkt auf ein Feld.

    Wie kopiere ich einen Wert oder seinen Pfad?

    Jede Zeile hat zwei Aktionen, Copy value und Copy path. Wie du sie erreichst, hängt vom Eingabegerät ab. Mit der Maus erscheinen sie, wenn du über die Zeile fährst oder sie fokussierst. Mit der Tastatur kopiert c den Wert und Shift+C den Pfad. Auf einem Touchscreen öffnet langes Drücken ein Sheet mit denselben Aktionen, dem vollständigen Wert (bei einem Datum in lokaler Zeit) und Expand all from here.

    pathFormat legt fest, was Copy path liefert:

    pathFormatKopierter PfadWofür
    "js" (Standard)data.items[0].name, Keys mit Leerzeichen als ["full name"]Zum Einfügen in JavaScript oder einen Bug-Report
    "pointer"/items/0/nameJSON Pointer, wie ihn JSON Patch und viele Schema-Tools nutzen

    rootPathName ersetzt data am Anfang von JS-Pfaden. Mit rootPathName="webhook" kopierst du also webhook.invoice.customer.name. Brauchst du den Pfad in deinem eigenen Code, feuert onSelect(path, value), sobald jemand einen Wert per Enter, Klick oder Antippen auswählt, und die gewählte Zeile bleibt markiert. formatJsonPath(path, "pointer") macht aus dem JsonPath-Array Text, genau wie die Kopieraktion.

    Typ-Chips, Zeilennummern und JSON-Pointer-Pfade sind an: Tippe einen Wert an, und der gewählte Pfad unter dem Baum ändert sich
    $ npx wingo-ui@latest add json-viewer
    ProDoku: JSON Viewer

    Welche Props des JSON Viewers sind am wichtigsten?

    Die meisten Screens setzen nur drei oder vier. Die vollständige Liste mit Standardwerten steht auf der Doku-Seite des JSON Viewers.

    PropStandardWirkung
    defaultExpandDepth1Ebenen, die beim Mount offen sind; 0 lässt die Wurzel zu
    rootName""Ein Key-Label an der Wurzel, etwa "payload"
    maxStringLength120Längere Strings werden abgeschnitten und bekommen einen Show-more-Button
    showTypesfalseEin kleiner Chip vor jedem Wert: string, int, float, bool, null, date
    sortKeysfalseAlphabetische Keys auf dem Bildschirm; Kopieren und Download behalten die ursprüngliche Reihenfolge
    detectDatestrueISO-Datumsstrings bekommen die Datumsfarbe und einen Tooltip in lokaler Zeit
    height / maxHeight0 / 480Feste Höhe, oder der Viewer wächst bis zur Obergrenze und scrollt dann intern
    toolbartrueSuche, alles auf- und zuklappen, JSON kopieren und Download

    size="sm" (24px hohe Zeilen, 12px Text) mit toolbar={false} passt in eine kompakte Karte, etwa für ein großes Tool-Ergebnis in einer Agent-UI. Die Tool Call Timeline zeigt die Argumente und das Ergebnis jedes Schritts in einem Code Block, was für kleine Eingaben reicht. Liefert ein Tool ein tiefes, verschachteltes Ergebnis, passt ein kompakter Viewer besser (der Guide zur UI für Tool Calls von KI-Agenten behandelt den Rest dieses Screens). Soll der Viewer ein Panel mit veränderbarer Größe füllen, gib der Wurzel className="h-full" und setz sowohl height={0} als auch maxHeight={0}. Alle Texte stecken in labels, mit englischen Standardwerten in DEFAULT_JSON_VIEWER_LABELS, und Anzahlen und Datumsangaben richten sich nach locale.

    Ist der JSON-Baum barrierefrei?

    Ja. Der Baum ist ein einziger Tab-Stopp mit role="tree", und jede Zeile ist ein treeitem mit Ebene, Position und Aufklappzustand. Pfeil hoch und Pfeil runter wechseln die Zeile, Bild auf und Bild ab springen um 10 Zeilen, Pfeil rechts öffnet einen Zweig oder springt hinein, Pfeil links schließt ihn oder geht zum Elternknoten, Pos1 und Ende springen zur ersten und letzten Zeile, und * öffnet alle Geschwister. Enter klappt einen Zweig auf oder zu oder wählt einen Wert aus, und die Kontextmenü-Taste (oder Shift+F10) öffnet die Aktionen der Zeile. Rückmeldungen zu Kopieren und Download laufen über eine Live-Region im Modus polite, ein Screenreader liest also „Copied“ vor.

    Wie verhält er sich auf dem Handy?

    Auf Touchscreens wachsen die Zeilen von 28px auf 36px. Das liegt bewusst unter dem üblichen Touch-Ziel von 44px: Bei 44px zeigt ein Handy etwa 12 Zeilen des Baums, und das ist zu wenig Kontext, um verschachtelte Daten zu lesen. Deshalb liegen die Aktionen im Sheet, das sich bei langem Drücken öffnet, statt in winzigen Buttons in der Zeile. Ist der Viewer schmaler als 512px, brechen lange Werte unter ihren Key um, statt seitlich zu scrollen (wrap="auto"), und unter derselben Breite klappt die Toolbar ihre Aktionen in ein ⋯-Menü. Zeilenaktionen wandern von Hover auf langes Drücken, nichts hängt also von einem Mauszeiger ab. Ist die Payload der Hauptinhalt eines Screens, gib ihr den größten Teil der Viewport-Höhe; ein 200px hohes Panel zeigt auf dem Handy etwa fünf Zeilen.

    Wie rendere ich sehr große JSON-Payloads?

    Der JSON Viewer teilt lange Arrays in Seiten auf und virtualisiert lange Bäume. Ein Array mit mehr als 100 Einträgen öffnet sich seitenweise. Eine Liste mit 10.000 Datensätzen zeigt also 100 geschlossene Zeilen mit Labels wie [0 … 99], und jede öffnet ihre 100 Einträge. Über virtualThreshold (standardmäßig 300 sichtbare Zeilen) liegen nur die Zeilen auf dem Bildschirm im DOM, einzeln gemessen und mit 12 Zeilen Overscan. Lange Strings wie Base64-Dateien werden bei maxStringLength abgeschnitten, und ein Suchtreffer weiter hinten in so einem String zeigt den ganzen String. Zirkuläre Referenzen erscheinen als [Circular → data.parent], statt die App abstürzen zu lassen, und BigInt, NaN, Infinity, Maps und Sets bekommen eine lesbare Form.

    Zwei Stolperfallen solltest du kennen. defaultExpandDepth gilt nur beim Mount, eine spätere Änderung bewirkt also nichts; ruf api.expandToDepth(n) auf oder ändere den key der Komponente. Und Copy JSON und Download exportieren alles in data. Entferne Tokens und personenbezogene Daten deshalb auf dem Server, bevor die Payload eine Admin-Seite erreicht.

    Gibt es eine react json view alternative, die noch gepflegt wird?

    Wer nach „json tree react“ sucht, findet immer dieselben paar Pakete. Das steht in ihren eigenen READMEs und Docs, Stand Oktober 2026:

    BibliothekSucheKopierenBearbeitenHinweise
    react-json-view (opens in a new tab)Nicht dokumentiertJaJaLaut README nicht mehr gepflegt, verweist auf den Fork von microlink
    @microlink/react-json-view (opens in a new tab)Nicht dokumentiertenableClipboardonEdit, onAdd, onDeleteDer Ersatz, den die ursprüngliche README nennt, base16-Themes
    react-json-view-lite (opens in a new tab)Nicht dokumentiertNicht enthaltenNicht enthaltenKlein, das Markup folgt dem Treeview-Beispiel des W3C, v2 braucht React 18+
    react-json-tree (opens in a new tab)Nicht dokumentiertNicht dokumentiertNicht dokumentiertAus den Redux DevTools, base16-Themes, collectionLimit gruppiert lange Collections
    Geist JSON View (opens in a new tab)Hervorhebung über highlightPattern, kein SuchfeldMarkierbarer TextNicht dokumentiertTastaturnavigation, defaultExpandDepth
    Wingo UI JSON ViewerEingebaut, öffnet passende ZweigeWert, Pfad, ganzes JSON, DownloadNeinVirtualisiert, Handy-Layout, Quellcode wird in dein Projekt kopiert

    Wo ein anderes Paket die bessere Wahl ist: Müssen Leute das JSON direkt bearbeiten, nimm @microlink/react-json-view, denn unser Viewer zeigt Daten nur an. Willst du die kleinste reine Anzeige-Komponente für collapsible JSON in React und brauchst weder Suche noch Kopieren, ist react-json-view-lite eine vernünftige Wahl. Für einen Baum aus Ordnern oder Kategorien statt roher Daten passt die Tree View besser als jeder JSON Viewer.

    Wann reicht ein Code Block?

    Wenn das JSON kurz und fest ist: eine Beispielanfrage in der Doku, ein Config-Snippet, eine Beispielantwort. Fünf Zeilen muss niemand zuklappen. Der Code Block hebt JSON mit language="json" farbig hervor, ergänzt Zeilennummern und einen Kopier-Button und ist kostenlos. Nimm den Viewer, wenn die Daten live, lang oder verschachtelt sind und Leute etwas darin finden müssen. Für fortlaufende Logzeilen mit angehängtem JSON streamt der Log Viewer die Zeilen und öffnet beim Klicken oder Tippen den JSON-Baum einer Zeile darunter, mit genau diesem Viewer (Guide zum React Log Viewer). Ist der Baum deine eigene Datenstruktur, etwa Ordner oder Berechtigungen, die Leute anhaken und verschieben, passt der Guide zum React Tree View besser als ein JSON Viewer.

    Ein kurzes JSON-Beispiel im Code Block: Drück den Kopier-Button im Header, und das Icon wird zu einem Haken
    $ npx wingo-ui@latest add code-block
    FreeDoku: Code Block

    Wie füge ich den JSON Viewer zu einem Next.js-Projekt hinzu?

    Führ den add-Befehl in einem Next.js-Projekt mit Tailwind CSS v4 aus. Die CLI kopiert die Komponente nach components/ui, ergänzt die Hooks und Helfer, die sie importiert, und installiert ihre npm-Pakete, darunter @tanstack/react-virtual und motion:

    bash
    npx wingo-ui@latest add json-viewer code-block

    Der JSON Viewer gehört zu Wingo UI Pro, das Stand Oktober 2026 $8 im Monat, $80 im Jahr oder einmalig $150 kostet (Preise von Wingo UI); der Code Block ist kostenlos. Für einen ganzen Admin-Screen drumherum baut das Tutorial zum Next.js Admin-Dashboard die Seiten, und der Guide zur React AI Chat UI zeigt, wo Payloads von Tool Calls in einem Chat auftauchen. Weitere Guides findest du in der Kategorie Komponenten-Guides, am besten fängst du mit dem Guide zu React-Formularkomponenten an.

    Komponenten in diesem Artikel

    • JSON Viewer

      A collapsible JSON tree with type colors, search that opens the matching branches, copy value or path, and virtualization for huge payloads.

      Pro
    • Code Block

      A React code block with syntax highlighting, line numbers, highlighted lines and a copy button, themed from a single accent color.

      Free

    Häufige Fragen

    Wie zeige ich JSON in React an?

    Für ein kurzes, festes Snippet reicht JSON.stringify(value, null, 2) in einem pre-Element oder einem Code Block. Für Payloads, die Leute durchsuchen müssen, etwa Webhooks, API-Antworten oder die Eingaben von Tool Calls, nimm eine JSON-Viewer-Komponente mit aufklappbarem Baum, Suche und Kopieren.

    Wird react-json-view noch gepflegt?

    Nein. Laut der README des ursprünglichen mac-s-g/react-json-view kann der Autor das Paket nicht mehr pflegen, und sie nennt @microlink/react-json-view als möglichen Ersatz. Prüf bei jedem Fork die Peer Dependencies gegen deine React-Version, bevor du ihn installierst.

    Wie durchsuche ich einen JSON-Baum in React?

    Vergleich Keys und Werte mit der Suchanfrage, und zwar über alle Daten, nicht nur über die gerenderten Zeilen. Öffne dann die Vorfahren jedes Treffers und scroll zum ersten. Der JSON Viewer von Wingo UI macht das über die Suche in seiner Toolbar, und setApi gibt dir search(query), um eine Suche aus deinem Code zu starten.

    Schafft ein React JSON Viewer 10.000 Einträge?

    Ja, wenn er virtualisiert. Der JSON Viewer von Wingo UI öffnet lange Arrays in Seiten mit je 100 Einträgen und rendert ab 300 sichtbaren Zeilen nur die Zeilen auf dem Bildschirm; seine Doku enthält ein Beispiel mit 10.000 Kontakten.

    Kann ich einen JSON-String direkt an den Viewer übergeben?

    Nein. Parse ihn vorher mit JSON.parse in einem try-Block. Der JSON Viewer von Wingo UI parst keine Strings, die JSON enthalten, also erscheint eine ungeparste Payload als ein einziger langer String-Wert.

    • JSON
    • Datenanzeige
    • Entwickler-Tools
    • Admin
    • Barrierefreiheit

    Teilen

    SR

    Über den Autor

    Serban Rusu

    Gründer von Wingo UI

    Serban Rusu hat Wingo UI gegründet. Er baut die Komponenten, die CLI und den MCP-Server und schreibt über React-UIs für Smartphones und KI-Agents.

    Mehr von Serban
    Weiterlesen

    Ähnliche Artikel

    Alle Artikel
    Komponenten-Guides

    React Diff Viewer für React 19: Split, Unified, Wort-Diffs

    Wie ein React Diff Viewer arbeitet, welche Pakete unter React 19 laufen und wie du KI-Änderungen, Verträge und Configs mit Split-Ansicht und Wort-Diff prüfst.

    SRSerban Rusu·16. Okt. 2026·10 Min. Lesezeit
    UI mit KI-Agenten bauen

    Nextjs llms.txt: llms-full.txt und .md-Seiten erzeugen

    So erzeugst du nextjs llms.txt mit Route Handlern im App Router: einen Index, eine llms-full.txt und eine .md-Version jeder Seite, alles aus einer Datenquelle.

    SRSerban Rusu·16. Okt. 2026·10 Min. Lesezeit
    Komponenten-Guides

    Embla Carousel React: barrierefreie Slides ohne Layout Shift

    Bau mit Embla Carousel React ein Karussell für Fotos, Inserate, Testimonials und Onboarding, mit Tastatursteuerung, pausierbarem Autoplay und ohne Layout Shift.

    SRSerban Rusu·19. Okt. 2026·9 Min. Lesezeit
    Newsletter

    Neue Artikel per E-Mail

    Neue Guides, Tutorials und Vergleiche aus dem Wingo UI Blog, sobald sie erscheinen. Die meisten Artikel sind auf Englisch.

    Kein Spam. Du kannst dich jederzeit abmelden.

    WingoUI

    Animierte, konfigurierbare, mobile-first React-Komponenten und Blöcke. Kopier den Quellcode, pass ihn an und lass deinen Coding-Agenten damit bauen.

    Produkt

    • Komponenten
    • Vorlagen
    • Preise
    • KI-Agenten
    • Theme-Generator

    Ressourcen

    • Doku
    • Blog
    • Changelog
    • Changelog-RSS
    • llms.txt

    Rechtliches

    • AGB
    • Datenschutz
    • Rückerstattung
    • Lizenz
    • Impressum

    Komponenten-Kategorien

    • Buttons & Actions
    • Inputs
    • Forms
    • Navigation
    • Overlays
    • Feedback
    • Data Display
    • Tables & Lists
    • Charts & Stats
    • Layout
    • Media
    • AI Kit
    • Text & Effects
    • Mobile
    • Commerce
    • Marketing Sections
    • Blocks
    • Hooks & Utilities

    © 2026 Wingo UI

    Wingo UI