JSON Patch-genereerder

Vergelyk twee JSON-dokumente en kry die RFC 6902-lap wat die eerste in die tweede verander. Alles loop in jou blaaier.

Wat hierdie hulpmiddel doen


Dit vergelyk twee JSON-dokumente en skryf die lys bewerkings wat die eerste in die tweede verander, in die formaat wat RFC 6902 bepaal. In plaas van om 'n hele dokument te stuur om te sê dat een veld verander het, stuur jy die verandering self.

Wanneer om dit te gebruik


Om die lyf van 'n PATCH-versoek te bou, om aan te teken wat tussen twee weergawes van 'n konfigurasielêer verander het, of om 'n ouditspoor te hou wat baie kleiner is as om elke volle kopie te bewaar. Dit is ook 'n vinnige manier om uit te vind waar twee dokumente wat eenders lyk, werklik verskil.

Die bewerkings wat dit genereer


BewerkingWat dit beteken
addVoeg 'n waarde by waar daar nog niks was nie, of voeg in 'n skikking in.
removeSkrap die waarde op daardie plek.
replaceOorskryf die waarde op 'n plek wat reeds bestaan.
moveSkuif 'n waarde van een plek na 'n ander.
copyKopieer 'n waarde na 'n ander plek.
testToets 'n waarde en staak die hele lap as dit nie klop nie.

Hierdie hulpmiddel skryf net add, remove en replace. Daardie drie kan enige verandering uitdruk, en 'n lap wat jy reël vir reël kan lees, is meer werd as 'n korter een waaroor jy moet dink. Die ander drie is ook deel van RFC 6902 en enige voldoende bediener aanvaar hulle.

Hoe die paaie werk


Elke pad is 'n JSON Pointer (RFC 6901): 'n roete vanaf die wortel van die dokument, met skuinsstrepe geskei, waar “/address/zipCode” die veld zipCode binne address beteken. Posisies in 'n skikking is getalle, dus is “/skills/0” die eerste item, en 'n koppelteken beteken die einde van die skikking: “/skills/-” voeg agteraan by. Omdat die skuinsstreep die skeier is, word 'n sleutel wat een bevat as ~1 geskryf, en 'n letterlike tilde as ~0.

Opmerkings oor die uitvoer


Die vergelyking is letterlik: waardes word posisie vir posisie vergelyk, en om 'n item aan die begin van 'n skikking in te voeg lewer dus 'n replace op elke daaropvolgende item eerder as 'n enkele invoeging. Vir skikkings van objekte met stabiele identifiseerders sal 'n lap wat uit die identifiseerders gebou is altyd kleiner wees as een wat uit die posisies gebou is.

Hoe om 'n JSON Patch te genereer


Plak twee JSON-dokumente en genereer die lap.

  1. Plak die oorspronklike JSON links.
  2. Plak die gewysigde JSON regs.
  3. Klik Genereer en kopieer dan die lap.

Gereelde vrae


Stuur hierdie hulpmiddel my data êrens heen?
Nee. Albei dokumente bly in jou blaaier en die lap word op jou eie masjien gegenereer.

Voldoen die uitvoer aan RFC 6902?
Ja. Elke bewerking is 'n objek met op, path en — vir add en replace — value, en die paaie is JSON Pointers soos RFC 6901 hulle omskryf.

Sluit dit move- en copy-bewerkings in?
Nee. Dit skryf add, remove en replace, wat genoeg is vir enige verandering en baie makliker lees. 'n move is eenvoudig 'n remove gevolg deur 'n add.

Hoe pas ek die lap toe?
Stuur dit na 'n API wat application/json-patch+json aanvaar, of gebruik 'n biblioteek: jsonpatch in Python, json-patch in JavaScript, JsonPatchDocument in .NET, json-patch in Java, ensovoorts.

Wat is die verskil met JSON Merge Patch?
JSON Merge Patch (RFC 7386) lyk soos die dokument self, met null wat “skrap” beteken. Dit maak dit maklik leesbaar, maar dit kan nie 'n regte null stoor of 'n enkele item in 'n skikking aanraak nie. JSON Patch is langdradiger maar kan enigiets uitdruk.

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