एक तेज़ और प्राइवेट JSON डिफरेंस चेकर
जटिल डेटा स्ट्रक्चर्स के साथ काम करते समय, किसी एक मॉडिफाइड वैल्यू या मिसिंग की (key) का पता लगाना बहुत मुश्किल हो सकता है। यह JSON compare टूल दो JSON पेलोड्स के बीच के सटीक अंतर को तुरंत एनालाइज़ और हाईलाइट करने के लिए डिज़ाइन किया गया है। कोड की हज़ारों लाइनों को पढ़ने के बजाय, आपको एक क्लीन और स्ट्रक्चर्ड रिपोर्ट मिलती है कि वास्तव में क्या बदला है।
चूँकि यह टूल पूरी तरह से आपके वेब ब्राउज़र में चलता है, इसलिए यह ऑनलाइन JSON diff रन करने का एक पूरी तरह से प्राइवेट तरीका है। आपका डेटा कभी भी किसी सर्वर पर अपलोड या डेटाबेस में स्टोर नहीं किया जाता है। आप डेटा लीक के किसी भी जोखिम के बिना अपने प्रोप्रायटरी API रिस्पॉन्स, कस्टमर डेटा पेलोड्स, या सेंसिटिव एनवायरनमेंट कॉन्फ़िगरेशन को सुरक्षित रूप से पेस्ट कर सकते हैं।
डीप JSON तुलना कैसे काम करती है
अगर आप दो JSON फ़ाइलों की तुलना करना चाहते हैं, तो साधारण प्लेन-टेक्स्ट Diff Checker का उपयोग करने से अक्सर फॉल्स पॉज़िटिव (false positives) मिलते हैं। प्लेन टेक्स्ट टूल्स डेटा की लाइन-बाय-लाइन तुलना करते हैं। अगर आपके मॉडिफाइड JSON का इंडेंटेशन अलग है, या किसी ऑब्जेक्ट में keys का क्रम बदल गया है, तो टेक्स्ट diff पूरे ब्लॉक को ही बदला हुआ मान लेगा।
यह टूल अलग तरीके से काम करता है। यह टेक्स्ट को असली JavaScript ऑब्जेक्ट्स में पार्स करता है और डेटा स्ट्रक्चर की गहराई से, रिकर्सिव (recursive) तुलना करता है। यह व्हाइटस्पेस, इंडेंटेशन और ऑब्जेक्ट key के क्रम को इग्नोर करता है। अगर {"status": "ok", "code": 200} बदलकर {"code": 200, "status": "ok"} हो जाता है, तो टूल उन्हें बिल्कुल एक समान मानता है।
जब इसे कोई अंतर मिलता है, तो यह स्टैण्डर्ड डॉट नोटेशन और ब्रैकेट सिंटैक्स का उपयोग करके बदलाव का सटीक पाथ (path) जनरेट करता है। उदाहरण के लिए, अगर किसी ऐरे (array) में तीसरा टैग बदलता है, तो टूल किसी बड़ी फ़ाइल में किसी भी रैंडम लाइन को हाईलाइट करने के बजाय, आपको सीधे tags[2] पर पॉइंट करेगा।
ऐरे को हैंडल करना: Strict बनाम Order-agnostic
JSON डिफरेंस चेकर में सबसे आम चुनौतियों में से एक ऐरे (arrays) को हैंडल करना है। कभी-कभी, ऐरे में आइटम का क्रम (order) बहुत मायने रखता है। वहीं दूसरी ओर, कभी-कभी ऐरे केवल आइटम की एक अनऑर्डर्ड लिस्ट (unordered list) होती है, और आपको केवल इस बात से मतलब होता है कि उनका कंटेंट मैच कर रहा है या नहीं।
डिफ़ॉल्ट रूप से, यह टूल इंडेक्स के आधार पर ऐरे की सख्ती से तुलना करता है। यह चेक करता है कि ओरिजिनल डेटा का पहला आइटम मॉडिफाइड डेटा के पहले आइटम से मैच करता है या नहीं, और आगे भी यही प्रक्रिया अपनाता है।
यदि आप Ignore array order विकल्प को चुनते हैं, तो टूल के काम करने का तरीका बदल जाता है। यह तुलना करने से पहले दोनों ऐरे के कंटेंट को सीरियलाइज़ करता है और अल्फाबेटिकली (alphabetically) सॉर्ट करता है। इसका मतलब है कि यदि आपका ओरिजिनल ऐरे ["apple", "banana"] है और आपका मॉडिफाइड ऐरे ["banana", "apple"] है, तो टूल कोई बदलाव नहीं (zero changes) दिखाएगा। यह फीचर उन डेटाबेस के API रिस्पॉन्स की तुलना करते समय बहुत काम आता है जो किसी विशिष्ट सॉर्ट ऑर्डर (sort order) की गारंटी नहीं देते हैं।
सामान्य उपयोग
API रिस्पॉन्स को डीबग करना। जब कोई API एंडपॉइंट अचानक काम करना बंद कर देता है, तो पुराने काम कर रहे रिस्पॉन्स की नए फेल हो रहे रिस्पॉन्स से तुलना करना, गड़बड़ी का पता लगाने का सबसे तेज़ तरीका है। दोनों पेलोड को पेस्ट करें और तुरंत देखें कि क्या किसी key का नाम बदला गया है, डेटा टाइप string से integer में बदल गया है, या कोई नेस्टेड ऑब्जेक्ट हटा दिया गया है।
कॉन्फ़िगरेशन फ़ाइलों का रिव्यू करना। आधुनिक एप्लिकेशन काफी हद तक JSON कॉन्फ़िगरेशन फ़ाइलों पर निर्भर करते हैं, जैसे कि package.json, tsconfig.json, या क्लाउड डिप्लॉयमेंट टेम्प्लेट। कोई भी बदलाव कमिट (commit) करने से पहले, यह वेरिफाई करने के लिए इस टूल का उपयोग करें कि कौन सी डिपेंडेंसी अपडेट की गई हैं या कौन सी सेटिंग्स बदली गई हैं।
डेटाबेस रिकॉर्ड का ऑडिट। MongoDB जैसे डॉक्यूमेंट डेटाबेस, रिकॉर्ड्स को JSON-जैसे स्ट्रक्चर में स्टोर करते हैं। अगर आपको यह ऑडिट करना है कि समय के साथ किसी विशिष्ट यूज़र प्रोफ़ाइल या डॉक्यूमेंट में क्या बदलाव हुए हैं, तो पुराने JSON एक्सपोर्ट की वर्तमान स्थिति के साथ तुलना करने से जोड़े गए, हटाए गए और बदले गए फ़ील्ड्स का एक स्पष्ट ऑडिट ट्रेल मिल जाता है।
आउटपुट को समझना
दोनों पैनल में सही JSON पेस्ट करने के बाद, यह टूल एक सारांश और बदलावों की विस्तृत सूची तैयार करता है:
- Added (+): वे Keys या array items जो संशोधित (modified) JSON में मौजूद हैं लेकिन मूल (original) JSON में नहीं। इन्हें हरे रंग में हाईलाइट किया जाता है।
- Removed (−): वे Keys या array items जो मूल JSON में मौजूद हैं लेकिन संशोधित वर्ज़न में नहीं हैं। इन्हें लाल रंग में हाईलाइट किया जाता है।
- Changed (~): वे Keys जो दोनों में मौजूद हैं, लेकिन उनकी वैल्यू अलग हैं (जैसे, कोई स्ट्रिंग अपडेट की गई हो, या बूलियन
trueसेfalseहो गया हो)। इन्हें पीले रंग में हाईलाइट किया जाता है, जिसमें पुरानी और नई दोनों वैल्यू दिखाई देती हैं।
अगर आपको इस तुलना के परिणाम किसी सहकर्मी के साथ शेयर करने हैं या किसी बग रिपोर्ट में पेस्ट करने हैं, तो आप Copy बटन का उपयोग कर सकते हैं। यह हर बदले गए पाथ (path) और उसकी वैल्यू का एक क्लीन, प्लेन-टेक्स्ट सारांश कॉपी कर लेता है।
डेटा में आगे कोई बदलाव करने के लिए, आप JSON Formatter का उपयोग करके अव्यवस्थित डेटा को पहले फॉर्मेट कर सकते हैं, या अपना JSON स्ट्रक्चर फाइनल करने के बाद, JSON to TypeScript कनवर्टर का उपयोग करके टाइप डेफिनिशन जनरेट कर सकते हैं।