JSON Patch anwenden

JSON Patch anwenden nach RFC 6902: Operationen add, remove, replace, move, copy und test auf ein Dokument ausführen und Fehler je Operation sehen.

Protokoll
    Ergebnis

    Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

    JSON Patch nach RFC 6902 verstehen

    JSON Patch ist ein Format nach RFC 6902, das Änderungen an einem JSON-Dokument als Liste von Patch-Operationen beschreibt. Jede Operation hat einen Typ (add, remove, replace, move, copy oder test) und einen Pfad im Format JSON Pointer (RFC 6901), etwa /kontakt/email oder /tags/0. HTTP-APIs nutzen JSON Patch für PATCH-Anfragen, Kubernetes für kubectl patch --type=json. Mit diesem Werkzeug können Sie einen JSON Patch anwenden und JSON Patch testen, bevor er ein echtes System erreicht.

    Das Protokoll zeigt jede Operation einzeln mit Ergebnis. Schlägt eine Operation fehl, etwa weil ein Pfad nicht existiert, ein Array-Index zu groß ist oder ein test einen anderen Wert findet, nennt die Meldung die Nummer und den Grund. Wie in RFC 6902 vorgeschrieben, wird der Patch dann nicht teilweise angewendet: Entweder gelingen alle Operationen oder keine. Im JSON Pointer steht ~1 für einen Schrägstrich und ~0 für eine Tilde im Schlüssel; - am Ende eines Array-Pfads hängt ein Element an.

    Grenzen: Das Werkzeug wendet Patches an, erzeugt sie aber nicht aus zwei Dokumenten. Unterschiede zwischen zwei Fassungen zeigt JSON vergleichen. Zahlen werden wie in JavaScript verglichen, sehr große Ganzzahlen über 2^53 verlieren Genauigkeit.

    Anleitung: JSON Patch anwenden in 4 Schritten

    1. Das Ausgangsdokument in „JSON-Dokument“ einfügen.
    2. Den Patch als Array von Operationen in „JSON Patch (RFC 6902)“ einfügen.
    3. Im „Protokoll“ ablesen, welche Operation erfolgreich war und wo ein Fehler auftritt.
    4. Das Ergebnis mit „Kopieren“ übernehmen.

    Typische Anwendungsfälle

    • Ein PATCH-Request mit Content-Type: application/json-patch+json soll vor dem Senden gegen echte Daten getestet werden.
    • Kubernetes-Ressourcen werden mit kubectl patch --type=json geändert; der Patch wird vorab geprüft.
    • Ein fehlgeschlagener Patch aus einem Log soll nachvollzogen werden, um die fehlerhafte Operation zu finden.
    • Für Tests einer eigenen Patch-Implementierung werden die Beispiele aus RFC 6902 nachgerechnet.
    Fragen

    Häufige Fragen

    Was macht die Operation test?

    test prüft, ob am Pfad genau der angegebene Wert steht. Ist das nicht so, bricht der gesamte Patch ab. So lässt sich sicherstellen, dass ein Patch nur auf den erwarteten Stand angewendet wird.

    Warum wird mein Patch gar nicht angewendet, obwohl nur eine Operation falsch ist?

    RFC 6902 verlangt, dass ein Patch atomar wirkt: Schlägt eine Operation fehl, bleibt das Dokument unverändert. Das Protokoll zeigt, welche Operation das Problem verursacht.

    Wie füge ich ein Element am Ende eines Arrays an?

    Mit add und einem Pfad, der auf - endet, zum Beispiel {"op": "add", "path": "/tags/-", "value": "neu"}.

    Welcher Content-Type gehört zu JSON Patch?

    Für HTTP-Anfragen ist application/json-patch+json registriert. Für JSON Merge Patch nach RFC 7386 gilt dagegen application/merge-patch+json.

    Was ist der Unterschied zwischen JSON Patch und JSON Merge Patch?

    JSON Patch (RFC 6902) beschreibt einzelne Operationen mit Pfaden und kann Array-Elemente gezielt ändern. JSON Merge Patch (RFC 7386) ist ein Teildokument, das über das Original gelegt wird; Arrays werden dabei immer ganz ersetzt.

    Wie spreche ich das letzte Element eines Arrays an?

    Zum Anhängen dient /liste/-. Für ein vorhandenes Element brauchen Sie den Index, zum Beispiel /liste/2. Negative Indizes gibt es in JSON Pointer nicht.

    Weitere Werkzeuge

    Das könnte auch helfen

    Alle 558 Werkzeuge