JSON Patch-generator

Jämför två JSON-dokument och få den RFC 6902-patch som gör det första till det andra. Allt körs i din webbläsare.

Vad verktyget gör


Det jämför två JSON-dokument och skriver listan över de operationer som gör det första till det andra, i det format RFC 6902 definierar. I stället för att skicka ett helt dokument för att säga att ett fält har ändrats skickar du själva ändringen.

När du har nytta av det


Använd det för att bygga kroppen i en PATCH-begäran, för att notera vad som ändrats mellan två versioner av en konfigurationsfil, eller för att spara ett granskningsspår som är långt mindre än att behålla varje fullständig kopia. Det är också ett snabbt sätt att ta reda på vad som faktiskt skiljer två dokument som ser likadana ut.

Operationerna den skapar


OperationVad den betyder
addLägger till ett värde där det inte fanns något, eller infogar i en array.
removeTar bort värdet på den platsen.
replaceSkriver över värdet på en plats som redan finns.
moveFlyttar ett värde från en plats till en annan.
copyKopierar ett värde till en annan plats.
testKontrollerar ett värde och avbryter hela patchen om det inte stämmer.

Det här verktyget skriver bara add, remove och replace. De tre räcker för att uttrycka vilken ändring som helst, och en patch du kan läsa rad för rad är värd mer än en kortare som du måste klura på. De andra tre ingår i RFC 6902 och varje regelrätt server tar emot dem.

Så fungerar sökvägarna


Varje sökväg är en JSON Pointer (RFC 6901): en väg från dokumentets rot, avdelad med snedstreck, där ”/address/zipCode” betyder fältet zipCode inuti address. Positioner i en array är siffror, så ”/skills/0” är första posten, och ett bindestreck betyder slutet av arrayen: ”/skills/-” lägger till sist. Eftersom snedstrecket är avskiljaren skrivs en nyckel som innehåller ett sådant som ~1, och en bokstavlig tilde som ~0.

Om resultatet


Jämförelsen är bokstavlig: värden jämförs position för position, så att infoga ett element i början av en array ger ett replace på varje efterföljande element i stället för en enda infogning. För arrayer av objekt med stabila identifierare blir en patch byggd på identifierarna alltid mindre än en byggd på positioner.

Så genererar du en JSON Patch


Klistra in två JSON-dokument och generera patchen.

  1. Klistra in den ursprungliga JSON-texten till vänster.
  2. Klistra in den ändrade JSON-texten till höger.
  3. Klicka på Generera och kopiera sedan patchen.

Vanliga frågor


Skickar det här verktyget mina data någonstans?
Nej. Båda dokumenten stannar i din webbläsare och patchen skapas på din egen dator.

Följer resultatet RFC 6902?
Ja. Varje operation är ett objekt med op, path och — för add och replace — value, och sökvägarna är JSON Pointers precis som RFC 6901 definierar dem.

Ingår operationerna move och copy?
Nej. Den skriver add, remove och replace, som räcker för att uttrycka vilken ändring som helst och är mycket lättare att läsa. Ett move är helt enkelt ett remove följt av ett add.

Hur tillämpar jag patchen?
Skicka den till ett API som tar emot application/json-patch+json, eller använd ett bibliotek: jsonpatch i Python, json-patch i JavaScript, JsonPatchDocument i .NET, json-patch i Java, och så vidare.

Vad skiljer den från JSON Merge Patch?
JSON Merge Patch (RFC 7386) ser ut som dokumentet självt, där null betyder ”ta bort”. Det gör den lätt att läsa men oförmögen att lagra ett verkligt null eller att röra en enskild post i en array. JSON Patch är mer omständlig men kan uttrycka vad som helst.

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