JSON Patch Generator

Ihambing ang dalawang dokumentong JSON at kunin ang RFC 6902 patch na nagpapalit sa una tungo sa pangalawa. Lahat ay tumatakbo sa iyong browser.

Ano ang ginagawa ng kasangkapang ito


Inihahambing nito ang dalawang dokumentong JSON at isinusulat ang listahan ng mga operasyong nagpapalit sa una tungo sa pangalawa, sa anyong itinatakda ng RFC 6902. Sa halip na magpadala ng buong dokumento upang sabihing nagbago ang isang field, ang mismong pagbabago ang ipinapadala mo.

Kailan ito gamitin


Upang buuin ang katawan ng isang PATCH request, upang itala kung ano ang nagbago sa pagitan ng dalawang bersyon ng isang configuration file, o upang mag-ingat ng talaan ng pagsusuri na mas maliit nang husto kaysa itago ang bawat buong kopya. Mabilis din itong paraan upang malaman kung saan talaga nagkakaiba ang dalawang dokumentong magkamukha.

Ang mga operasyong nalilikha nito


OperasyonAng ibig sabihin
addNagdaragdag ng halaga kung saan wala pa, o nagpapasok sa isang array.
removeBinubura ang halaga sa lugar na iyon.
replacePinapatungan ang halaga sa lugar na umiiral na.
moveInililipat ang halaga mula sa isang lugar patungo sa iba.
copyKinokopya ang halaga sa ibang lugar.
testSinusuri ang isang halaga at itinitigil ang buong patch kung hindi ito tumugma.

Add, remove at replace lamang ang isinusulat ng kasangkapang ito. Kaya ng tatlong iyon ipahayag ang anumang pagbabago, at ang patch na nababasa linya-linya ay higit na mahalaga kaysa mas maikli ngunit pinag-iisipan pa. Bahagi rin ng RFC 6902 ang tatlo pang iba at tinatanggap ang mga ito ng anumang sumusunod na server.

Paano gumagana ang mga landas


Bawat landas ay isang JSON Pointer (RFC 6901): isang daang hinati ng slash mula sa ugat ng dokumento, kung saan ang “/address/zipCode” ay ang field na zipCode sa loob ng address. Numero ang mga posisyon sa array, kaya ang “/skills/0” ang unang aytem, at ang gitling ay nangangahulugang dulo ng array: nagdaragdag sa huli ang “/skills/-”. Dahil ang slash ang panghati, ang susing may slash ay isinusulat na ~1, at ang tunay na tilde ay ~0.

Tala tungkol sa resulta


Literal ang paghahambing: inihahambing ang mga halaga posisyon-sa-posisyon, kaya ang pagpasok ng aytem sa simula ng array ay naglilikha ng replace sa bawat sumusunod na aytem sa halip na isang pagpasok. Para sa array ng mga bagay na may matatag na pagkakakilanlan, palaging mas maliit ang patch na ginawa mula sa mga pagkakakilanlan kaysa sa ginawa mula sa posisyon.

Paano lumikha ng JSON Patch


Magdikit ng dalawang dokumentong JSON at likhain ang patch.

  1. Idikit ang orihinal na JSON sa kaliwa.
  2. Idikit ang binagong JSON sa kanan.
  3. Pindutin ang Likhain, pagkatapos ay kopyahin ang patch.

Mga madalas itanong


Ipinapadala ba ng kasangkapang ito ang aking datos kahit saan?
Hindi. Nananatili sa iyong browser ang dalawang dokumento at nalilikha ang patch sa sarili mong makina.

Sumusunod ba ang resulta sa RFC 6902?
Oo. Bawat operasyon ay isang bagay na may op, path at — para sa add at replace — value, at ang mga landas ay JSON Pointer ayon sa pagkakatakda ng RFC 6901.

Kasama ba ang operasyong move at copy?
Hindi. Isinusulat nito ang add, remove at replace, na sapat para sa anumang pagbabago at higit na madaling basahin. Ang move ay isa lamang remove na sinusundan ng add.

Paano ko ilalapat ang patch?
Ipadala ito sa isang API na tumatanggap ng application/json-patch+json, o gumamit ng library: jsonpatch sa Python, json-patch sa JavaScript, JsonPatchDocument sa .NET, json-patch sa Java, at iba pa.

Ano ang kaibhan sa JSON Merge Patch?
Kamukha ng mismong dokumento ang JSON Merge Patch (RFC 7386), kung saan ang null ay nangangahulugang “burahin”. Madali itong basahin ngunit hindi kayang mag-imbak ng tunay na null o galawin ang iisang aytem sa array. Mas mahaba ang JSON Patch ngunit kaya nitong ipahayag ang kahit ano.

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