Zum Inhalt springen

JSON-Pointer-Tester und Pfadgenerator

Fügen Sie das Dokument und einen Pointer wie /items/0/name ein. Den Segmentgenerator nutzen Sie, wenn Namen Schrägstriche oder Tilden enthalten.

Läuft lokal in deinem Browser
1Document2Pointer3Resolved value

DocumentRFC 6901

JSON Pointer auflösen oder aus Segmenten aufbauen

Das Werkzeug löst einen JSON Pointer nach RFC 6901 gegen ein JSON-Dokument auf und zeigt den gewählten Wert, die dekodierten Pfadsegmente und den Typ dieses Werts. Ein Pointer ist entweder die leere Zeichenkette, die das ganze Dokument auswählt, oder eine Folge von Segmenten zwischen Schrägstrichen: /users/0/name steigt in das Array users ein, nimmt dessen erstes Element und liest dort name.

Der Segmentgenerator arbeitet in die andere Richtung. Ein Segment pro Zeile wird zu einem maskierten Pointer zusammengesetzt, sodass Namen mit Schrägstrich oder Tilde als ~1 und ~0 herauskommen statt den Pfad zu zerlegen. Alles läuft in der Seite, und Kopieren legt den aufgelösten Wert in die Zwischenablage.

  1. Fügen Sie das JSON-Dokument in den Bereich Dokument ein oder klicken Sie auf Beispiel laden, um mit einem kleinen Array users zu starten, das bereits einen Schlüssel mit Schrägstrich enthält.
  2. Tragen Sie den Pointer in das Feld Pointer ein. Er muss leer sein oder mit einem Schrägstrich beginnen; die Form #/users/0/name gilt als URI-Fragment und wird vor dem Lesen der Segmente prozentdekodiert.
  3. Klicken Sie auf Pointer auflösen. Der Bereich Aufgelöster Wert zeigt den gewählten Wert — Zeichenketten unverändert, Objekte und Arrays formatiert — und Dekodierte Pfadsegmente listet jedes Segment mit seiner Position, bei leerem Pointer (document root).
  4. Lesen Sie die drei Kennzahlen über der Ausgabe: Segmente, Werttyp und ob der Pointer aufgelöst wurde. Ein Pointer, der das Dokument verlässt, wird als nicht gefunden gemeldet, statt einen nahen Wert zu liefern.
  5. Zum Erstellen eines Pointers tragen Sie ein Segment pro Zeile unter Pfadsegmente ein und klicken auf Aus Segmenten erstellen; leere Zeilen entfallen und der maskierte Pointer wird in das Feld Pointer geschrieben. Leeren setzt beide Bereiche, die Segmente, die Kennzahlen und die Statusmeldung zurück.

Was die Bereiche zeigen und wie die Pointer-Regeln greifen

Segmente, Escapes und URI-Fragmente

Der Pointer wird an Schrägstrichen geteilt, und der führende Schrägstrich markiert nur den Anfang: //empty adressiert die Eigenschaft mit dem leeren Namen, /a~1b den Schlüssel a/b. Die beiden Escapes sind ~1 für den Schrägstrich und ~0 für die Tilde; eine Tilde mit irgendetwas anderem dahinter, auch dem Pointerende, wird mit einem Fehler abgelehnt statt als Literal gelesen.

Das Feld akzeptiert außerdem ein URI-Fragment: #/users/0/name und die prozentkodierte Form #%2Fusers%2F1%2Fname ergeben dieselben Segmente, und #/a%20b liest den Schlüssel a b. Leerraum um den Pointer wird vor dem Auswerten entfernt, ein Leerzeichen hinter /a wird also ignoriert.

Arrays, Werttypen und nicht gefundene Ergebnisse

Array-Positionen folgen RFC 6901 strikt: Ein Segment zählt nur dann als Index, wenn es 0 ist oder eine Ziffernfolge ohne führende Null. /arr/1 wählt das zweite Element, während /arr/01, /arr/- und ein Index hinter dem Arrayende nicht gefunden werden; der Bindestrich, der in JSON Patch das Arrayende markiert, ist hier kein lesbarer Wert.

Objekte werden über den exakten eigenen Eigenschaftsnamen verglichen, sodass Schlüssel mit Leerzeichen, Unicode-Buchstaben oder Namen wie __proto__ wie jeder andere aufgelöst werden — es gibt keine Platzhalter und keine Suche. Werte erscheinen nach Typ: Zeichenketten roh, Zahlen und Booleans als JSON, null als null, Objekte und Arrays formatiert, dazu Werttyp und Aufgelöst in den Kennzahlen.

Pointer erstellen, Datenschutz und Grenzen

Aus Segmenten erstellen maskiert jede Zeile einzeln, verbindet die Segmente mit Schrägstrichen und ersetzt ~ durch ~0, bevor / zu ~1 wird — die Reihenfolge, die RFC 6901 verlangt. Eine leere Liste ergibt einen leeren Pointer, der das ganze Dokument auswählt; ist der Dokumentbereich leer, schreibt die Aktion nur den Pointer und meldet, dass er aus den Segmenten entstand, ohne einen Wert zu erfinden.

Beide Richtungen laufen im Browser: Auflösen, Erstellen, das Beispiel und Kopieren lösen keine Netzwerkanfrage aus, das Werkzeug arbeitet also offline und mit Daten, die den Rechner nicht verlassen dürfen. Kopieren bleibt untätig, solange kein Wert auf dem Bildschirm steht: Nach ungültigem JSON, einem falschen Escape oder einem nicht auflösbaren Pointer ist der vorige Wert geleert und kann nicht versehentlich kopiert werden.

Zuletzt verwendet: