JSON क्या है?
JSON (JavaScript Object Notation) संरचित डेटा का टेक्स्ट फ़ॉर्मेट है जो ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, बूलियन और null से बनता है। इसे RFC 8259 और ECMA-404 परिभाषित करते हैं; यह भाषा-स्वतंत्र है और वेब API का डिफ़ॉल्ट फ़ॉर्मेट है क्योंकि यह कॉम्पैक्ट, पढ़ने योग्य और पार्स करने में आसान है।
JSON डिफ़ कैसे इस्तेमाल करें
- बाईं ओर मूल डॉक्यूमेंट और दाईं ओर बदला हुआ डॉक्यूमेंट पेस्ट करें।
- अगर आपके डेटा में ऐरे की पोज़िशन मायने नहीं रखती तो "ऐरे का क्रम अनदेखा करें" पर टिक करें।
- सारांश, अंतर की तालिका और लाइन व्यू देखने के लिए Compare पर क्लिक करें।
- बदलावों को टिकट के साथ जोड़ना हो तो तालिका डाउनलोड कर लें।
"ऐरे का क्रम अनदेखा करें" बंदडिफ़ॉल्ट
आइटम की तुलना इंडेक्स से: [0] से [0], [1] से [1]…
- "अंतर" में
featuresकी पंक्तियाँ: - 3
- सारांश: बदले गए:
- 5
$.features[0] changed "cart" → "coupons"$.features[1] changed "coupons" → "cart"$.features[2] changed "wallet" → "gift-cards"
"ऐरे का क्रम अनदेखा करें" चालू
आइटम कंटेंट से मिलाए जाते हैं, इसलिए खिसके हुए "cart" और "coupons" को अपना जोड़ा मिल जाता है और वे रिपोर्ट नहीं होते
- "अंतर" में
featuresकी पंक्तियाँ: - 1
- सारांश: बदले गए:
- 3
$.features[2] changed "wallet" → "gift-cards"
टूल का उदाहरण ("उदाहरण लोड करें"): features बाएँ ["cart","coupons","wallet"] है और दाएँ ["coupons","cart","gift-cards"]। बाक़ी अंतर दोनों मोड में एक जैसे हैं।
JSON डिफ़ की खूबियाँ
- सिमैंटिक तुलना — कीज़ का क्रम, स्पेस और फ़ॉर्मेटिंग अनदेखी की जाती है
- हर अंतर JSON पाथ, बदलाव के प्रकार, पुरानी वैल्यू और नई वैल्यू के साथ सूचीबद्ध
- सेट जैसे ऐरे के लिए वैकल्पिक "ऐरे का क्रम अनदेखा करें" (ignore array order) मोड
- दोनों प्रिटी-प्रिंट किए डॉक्यूमेंट का लाइन-दर-लाइन डिफ़ व्यू
- जोड़ी गई, हटाई गई और बदली गई वैल्यू के सारांश काउंटर
- अंतर की तालिका को CSV के रूप में एक्सपोर्ट करता है
JSON डिफ़ का उदाहरण
कॉन्फ़िगरेशन के दो वर्ज़न की तुलना
इनपुट:
Left: {"version":"1.4.0","limits":{"rps":100}}
Right: {"limits":{"rps":150,"burst":200},"version":"1.5.0"}आउटपुट:
$.version changed "1.4.0" → "1.5.0"
$.limits.rps changed 100 → 150
$.limits.burst added → 200JSON डिफ़ के बारे में अक्सर पूछे जाने वाले सवाल
"सिमैंटिक" तुलना का क्या मतलब है?
दोनों डॉक्यूमेंट पार्स करके टेक्स्ट की तरह नहीं, डेटा की तरह तुलना किए जाते हैं। कीज़ का क्रम, स्पेस और इंडेंटेशन कभी अंतर नहीं माने जाते — सिर्फ़ असली वैल्यू ही मायने रखती हैं।
क्या मैं ऐरे आइटम का क्रम अनदेखा कर सकता हूँ?
"ऐरे का क्रम अनदेखा करें" चालू करें। फिर आइटम कंटेंट के आधार पर मिलाए जाते हैं, इसलिए ["a","b"] और ["b","a"] बराबर माने जाते हैं।
बदलाव के प्रकारों का क्या मतलब है?
Added: की सिर्फ़ दाईं ओर मौजूद है। Removed: सिर्फ़ बाईं ओर। Changed: दोनों ओर है पर वैल्यू अलग है। Type changed: वैल्यू का टाइप बदल गया, जैसे स्ट्रिंग से ऑब्जेक्ट।
अंतर कैसे बताए जाते हैं?
हर अंतर उसके JSON पाथ तथा पुरानी और नई वैल्यू के साथ सूचीबद्ध होता है, और दोनों प्रिटी-प्रिंट डॉक्यूमेंट का लाइन-दर-लाइन व्यू बदलावों को दृश्य रूप में हाइलाइट करता है।
तकनीकी नोट्स
दोनों इनपुट पार्स करके समानांतर रूप से ट्रैवर्स किए जाते हैं। ऑब्जेक्ट की तुलना कीज़ के आधार पर, ऐरे की इंडेक्स के आधार पर (या ऐरे का क्रम अनदेखा होने पर कैनोनिकल कंटेंट के आधार पर) और प्रिमिटिव की वैल्यू के आधार पर होती है। लाइन व्यू दोनों डॉक्यूमेंट को सॉर्ट की गई कीज़ के साथ प्रिटी-प्रिंट करता है और longest-common-subsequence डिफ़ चलाता है, जबकि बहुत बड़े इनपुट के लिए मोटे डिफ़ पर लौट आता है।
संदर्भ
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange FormatJSON का व्याकरण: ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, तीन लिटरल और इंटरचेंज एन्कोडिंग के रूप में UTF-8।
- ECMA-404: The JSON Data Interchange SyntaxEcma मानक के रूप में JSON सिंटैक्स, RFC 8259 के अनुरूप।
- Introducing JSONJSON का मूल एक-पृष्ठ विवरण, सिंटैक्स डायग्राम के साथ।