JSON Patch जेनरेटर
दो JSON दस्तावेज़ों की तुलना करें और वह RFC 6902 पैच पाएँ जो पहले को दूसरे में बदल देता है। सब कुछ आपके ब्राउज़र में चलता है।
यह टूल क्या करता है
यह दो JSON दस्तावेज़ों की तुलना करके उन संक्रियाओं की सूची लिखता है जो पहले को दूसरे में बदल देती हैं, ठीक उसी प्रारूप में जो RFC 6902 तय करता है। एक फ़ील्ड बदलने की ख़बर देने के लिए पूरा दस्तावेज़ भेजने के बजाय, आप बदलाव ही भेजते हैं।
कब काम आता है
PATCH अनुरोध का मुख्य भाग बनाने के लिए, किसी कॉन्फ़िगरेशन फ़ाइल के दो संस्करणों के बीच क्या बदला यह दर्ज करने के लिए, या ऐसा ऑडिट रिकॉर्ड रखने के लिए जो हर पूरी नक़ल रखने से कहीं छोटा हो। यह जानने का तेज़ तरीक़ा भी है कि एक जैसे दिखने वाले दो दस्तावेज़ों में असल में फ़र्क़ कहाँ है।
यह कौन-सी संक्रियाएँ बनाता है
| संक्रिया | इसका मतलब |
|---|---|
| add | जहाँ कोई मान नहीं था वहाँ मान जोड़ता है, या किसी सरणी में डालता है। |
| remove | उस जगह का मान मिटा देता है। |
| replace | पहले से मौजूद जगह के मान को बदल देता है। |
| move | किसी मान को एक जगह से दूसरी जगह ले जाता है। |
| copy | किसी मान की दूसरी जगह नक़ल बनाता है। |
| test | किसी मान की जाँच करता है और मेल न खाने पर पूरा पैच रोक देता है। |
यह टूल केवल add, remove और replace लिखता है। ये तीनों किसी भी बदलाव को व्यक्त कर सकते हैं, और ऐसा पैच जिसे पंक्ति-दर-पंक्ति पढ़ा जा सके, उस छोटे पैच से क़ीमती है जिसे समझने में सिर खपाना पड़े। बाक़ी तीन भी RFC 6902 का हिस्सा हैं और नियम मानने वाला कोई भी सर्वर उन्हें स्वीकार करता है।
पथ कैसे काम करते हैं
हर पथ एक JSON Pointer (RFC 6901) है: दस्तावेज़ की जड़ से शुरू होकर स्लैश से बँटा रास्ता, जहाँ “/address/zipCode” का अर्थ है address के भीतर का zipCode फ़ील्ड। सरणी की जगहें संख्याएँ होती हैं, इसलिए “/skills/0” पहला आइटम है, और डैश सरणी का अंत बताता है: “/skills/-” अंत में जोड़ता है। चूँकि स्लैश ही विभाजक है, जिस कुंजी में स्लैश हो उसे ~1 लिखा जाता है, और असली टिल्ड को ~0।
परिणाम के बारे में
तुलना अक्षरशः होती है: मान जगह-दर-जगह मिलाए जाते हैं, इसलिए किसी सरणी की शुरुआत में एक आइटम डालने पर एक ही सम्मिलन के बजाय उसके बाद के हर आइटम पर replace बनता है। स्थिर पहचानकर्ताओं वाली वस्तुओं की सरणी के लिए, पहचानकर्ताओं से बना पैच हमेशा जगहों से बने पैच से छोटा होगा।
JSON Patch कैसे बनाएँ
दो JSON दस्तावेज़ चिपकाएँ और पैच बनाएँ।
- बाईं ओर मूल JSON चिपकाएँ।
- दाईं ओर बदला हुआ JSON चिपकाएँ।
- बनाएँ दबाएँ, फिर पैच कॉपी करें।
अक्सर पूछे जाने वाले प्रश्न
क्या यह टूल मेरा डेटा कहीं भेजता है?
नहीं। दोनों दस्तावेज़ आपके ब्राउज़र में ही रहते हैं और पैच आपकी अपनी मशीन पर बनता है।
क्या परिणाम RFC 6902 के अनुरूप है?
हाँ। हर संक्रिया एक ऑब्जेक्ट है जिसमें op, path और — add तथा replace के लिए — value होता है, और पथ वही JSON Pointer हैं जिन्हें RFC 6901 परिभाषित करता है।
क्या इसमें move और copy संक्रियाएँ आती हैं?
नहीं। यह add, remove और replace लिखता है, जो किसी भी बदलाव के लिए काफ़ी हैं और पढ़ने में कहीं आसान। move दरअसल remove के बाद आने वाला add ही है।
पैच कैसे लागू करूँ?
इसे ऐसे API को भेजें जो application/json-patch+json स्वीकार करता हो, या कोई लाइब्रेरी इस्तेमाल करें: पायथन में jsonpatch, जावास्क्रिप्ट में json-patch, .NET में JsonPatchDocument, जावा में json-patch, इत्यादि।
JSON Merge Patch से क्या फ़र्क़ है?
JSON Merge Patch (RFC 7386) दस्तावेज़ जैसा ही दिखता है, जिसमें null का अर्थ “मिटाओ” होता है। इससे वह पढ़ने में आसान रहता है, पर असली null सहेज नहीं सकता और सरणी के किसी एक आइटम को छू भी नहीं सकता। JSON Patch अधिक शब्दों वाला है, पर कुछ भी व्यक्त कर सकता है।
Wikipedia — JSON Patch
Wikipedia — JSON
Wikipedia — Patch (computing)
Wikipedia — Diff
Wikipedia — REST