Generatore di JSON Patch

Confronta due documenti JSON e ottieni il patch RFC 6902 che trasforma il primo nel secondo. Tutto funziona nel tuo browser.

Che cosa fa questo strumento


Confronta due documenti JSON e scrive l'elenco di operazioni che trasforma il primo nel secondo, nel formato definito dall'RFC 6902. Invece di inviare un documento intero per dire che è cambiato un campo, invii la modifica stessa.

Quando usarlo


Usalo per costruire il corpo di una richiesta PATCH, per registrare che cosa è cambiato fra due versioni di un file di configurazione o per conservare una traccia di controllo molto più piccola rispetto a tenere ogni copia intera. È anche un modo rapido per scoprire che cosa differisce davvero fra due documenti che sembrano uguali.

Le operazioni che genera


OperazioneChe cosa significa
addAggiunge un valore dove non ce n'era nessuno, o inserisce in un array.
removeElimina il valore in quella posizione.
replaceSovrascrive il valore di una posizione che esiste già.
moveSposta un valore da una posizione a un'altra.
copyCopia un valore in un'altra posizione.
testControlla un valore e annulla l'intero patch se non corrisponde.

Questo strumento scrive solo add, remove e replace. Queste tre bastano a esprimere qualsiasi modifica, e un patch che si legge riga per riga vale più di uno più corto su cui bisogna ragionare. Le altre tre fanno parte dell'RFC 6902 e qualsiasi server conforme le accetta.

Come funzionano i percorsi


Ogni percorso è un JSON Pointer (RFC 6901): una strada separata da barre a partire dalla radice del documento, dove “/address/zipCode” indica il campo zipCode dentro address. Le posizioni di un array sono numeri, quindi “/skills/0” è il primo elemento, e un trattino indica la fine dell'array: “/skills/-” aggiunge in coda. Poiché la barra è il separatore, una chiave che ne contiene una si scrive ~1, e una tilde letterale ~0.

Note sul risultato


Il confronto è letterale: mette a confronto i valori posizione per posizione, quindi inserire un elemento all'inizio di un array produce un replace su tutti quelli successivi invece di un solo inserimento. Per array di oggetti con identificatori stabili, un patch generato a partire dagli identificatori sarà sempre più piccolo di uno generato a partire dalle posizioni.

Come generare un JSON Patch


Incolla due documenti JSON e genera il patch.

  1. Incolla il JSON originale a sinistra.
  2. Incolla il JSON aggiornato a destra.
  3. Fai clic su Genera, poi copia il patch.

Domande frequenti


Questo strumento invia i miei dati da qualche parte?
No. Entrambi i documenti restano nel tuo browser e il patch viene generato sulla tua macchina.

Il risultato è conforme all'RFC 6902?
Sì. Ogni operazione è un oggetto con op, path e — per add e replace — value, e i percorsi sono JSON Pointer così come li definisce l'RFC 6901.

Include le operazioni move e copy?
No. Scrive add, remove e replace, che bastano a esprimere qualsiasi modifica e sono molto più facili da leggere. Un move è semplicemente un remove seguito da un add.

Come applico il patch?
Invialo a un'API che accetta application/json-patch+json, oppure usa una libreria: jsonpatch in Python, json-patch in JavaScript, JsonPatchDocument in .NET, json-patch in Java, e così via.

Che differenza c'è con JSON Merge Patch?
JSON Merge Patch (RFC 7386) somiglia al documento stesso, e null significa “cancella”. Questo lo rende facile da leggere, ma incapace di conservare un null vero o di toccare un singolo elemento di un array. JSON Patch è più prolisso e può esprimere qualsiasi cosa.

Wikipedia — JSON Patch
Wikipedia — JSON
Wikipedia — Patch (computing)
Wikipedia — Diff
Wikipedia — REST