इसका इस्तेमाल कैसे करें
- पुराना JSON बायाँ JSON में और नया JSON दायाँ JSON में चिपकाएँ।
- अगर सरणियाँ सेट जैसी हों, जैसे टैग की सूचियाँ, तो सरणी के आइटम का क्रम अनदेखा करें चुनें।
- अंतर की तालिका पढ़ें। हर पंक्ति मान का पथ (JSON Pointer) देती है, और जब पैच जाँच कहे कि पैच लगता है, तब JSON Patch कॉपी करें।
दस्तावेजों की तुलना कैसे होती है
दोनों दस्तावेजों की तुलना मान के आधार पर होती है। ऑब्जेक्ट में नामों का क्रम मायने नहीं रखता, क्योंकि JSON ऑब्जेक्ट को सदस्यों का सेट मानता है। सरणी में आइटम का क्रम मायने रखता है, जब तक आप विकल्प न चुनें, क्योंकि सरणी एक क्रमबद्ध सूची है।
संख्याओं की तुलना संख्या के रूप में होती है, इसलिए 1 और 1.0 बराबर हैं। RFC 8259 का खंड 6 कहता है कि -(2^53)+1 से (2^53)-1 तक के पूर्णांक हर कार्यान्वयन (implementation) में एक जैसे पढ़े जाते हैं, और उससे लंबा पूर्णांक पढ़ते समय गोल हो सकता है।
पथ और पैच
पथ एक JSON Pointer (RFC 6901) है: हर चरण एक नाम या एक इंडेक्स है, और स्लैश से अलग होता है। टैग की सूची का पहला आइटम /tags/0 है, और खाली पथ पूरा दस्तावेज है। नाम के अंदर का स्लैश ~1 लिखा जाता है, और टिल्ड ~0।
JSON Patch (RFC 6902) तीन ऑपरेशन इस्तेमाल करता है: add, remove और replace। हटाए गए सरणी आइटम आखिरी से पीछे की ओर हटाए जाते हैं, ताकि हर इंडेक्स इस्तेमाल होते समय सही रहे, और जोड़े गए आइटम इंडेक्स "-" के साथ जोड़े जाते हैं, जिसे RFC 6902 सरणी का अंत बताता है।
सरणी का क्रम अनदेखा करना
विकल्प चुनने पर आइटम उनके मान से मिलाए जाते हैं, चाहे उनकी जगह कुछ भी हो। जिन आइटम का कोई जोड़ीदार नहीं है, वे जोड़े गए या हटाए गए बताए जाते हैं। जो सरणी अलग है, वह पैच में पूरी बदल दी जाती है, क्योंकि जो पैच सिर्फ आइटम को हिलाए, उसे जानना होगा कि वे कैसे हिले। पैच फिर दाएँ दस्तावेज के क्रम में सरणी देता है।
उदाहरण: डिफ़ॉल्ट दस्तावेज
बाएँ दस्तावेज में नाम FireToolLand है, संस्करण 1, टैग json और csv, और free true। दाएँ दस्तावेज में संस्करण 2, टैग csv, json और yaml, और license null है। क्रम से पढ़ें तो अंतर छह हैं: संस्करण, दो बदले गए टैग, जोड़ा गया yaml टैग, हटाया गया free और जोड़ा गया license।
सरणी के आइटम का क्रम अनदेखा करने पर टैग दो आइटम हैं, बस दूसरे क्रम में, इसलिए टैग में अकेला अंतर yaml है, और संख्या घटकर चार हो जाती है।
| परिणाम | डिफ़ॉल्ट दस्तावेज | क्रम अनदेखा करने पर |
|---|---|---|
| अंतर की संख्या | 6 | 4 |
| सारांश | 2 जोड़े गए, 1 हटाए गए, 3 बदले गए। | 2 जोड़े गए, 1 हटाए गए, 1 बदले गए। |
अक्सर पूछे जाने वाले सवाल
सरणी के आइटम का क्रम क्यों मायने रखता है?
JSON में सरणी एक क्रमबद्ध सूची है, इसलिए [1,2] और [2,1] अलग डेटा हैं। जब सरणी सेट हो, जैसे टैग या अनुमतियों की सूची, तब सरणी के आइटम का क्रम अनदेखा करें चुनें।
/tags/0 जैसे पथ का मतलब क्या है?
यह एक JSON Pointer (RFC 6901) है: सदस्य tags, फिर उसका पहला आइटम, क्योंकि इंडेक्स 0 से गिनते हैं। खाली पथ का मतलब पूरा दस्तावेज है, और स्लैश वाले नाम की जगह ~1 लिखा जाता है।
क्या 1 और 1.0 एक ही मान हैं?
हाँ। दोनों संख्या एक हैं, इसलिए पेज कोई अंतर नहीं बताता। 2^53 से बड़े पूर्णांक JSON पार्सर से गोल हो सकते हैं, इसलिए लंबे पहचानकर्ताओं की तुलना टेक्स्ट के रूप में करें।
JSON Patch किस काम आता है?
यह RFC 6902 के चरणों की एक सूची है, जिसे कोई सर्वर या लाइब्रेरी एक दस्तावेज पर लगाकर दूसरा दस्तावेज बनाती है, जैसे सहेजी गई सेटिंग फ़ाइल को अपडेट करने के लिए। पैच जाँच दिखाती है कि चरण सही दस्तावेज देते हैं।
क्रम अनदेखा करने पर पूरी सरणी क्यों बदली जाती है?
क्रम अनदेखा होने पर बदली हुई सरणी के लिए कोई एक चरण नहीं होता जो उसे सही सरणी में बदल दे, बिना यह जाने कि उसके आइटम कैसे हिले। इसलिए पैच सही सरणी पूरी लिखता है।
क्या मेरा JSON कहीं भेजा जाता है?
नहीं। दोनों टेक्स्ट आपके ब्राउज़र में पढ़े और तुलना किए जाते हैं, और जो भी आप चिपकाते हैं वह हमारे सर्वर को नहीं भेजा जाता और न वहाँ सहेजा जाता है।
स्रोत
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format (अंग्रेजी में)
- RFC 6901: JavaScript Object Notation (JSON) Pointer (अंग्रेजी में)
- RFC 6902: JavaScript Object Notation (JSON) Patch (अंग्रेजी में)
आँकड़े और टेक्स्ट आखिरी बार मंगलवार, 10 नवंबर 2026 को जाँचे गए।