JSON Diff दो JSON डेटा सेट की तुलना करके उनके बीच जोड़े गए, हटाए गए और संशोधित फ़ील्ड को ढूंढना है। दैनिक विकास में, हमें अक्सर यह जानने की आवश्यकता होती है कि दो JSON के बीच "वास्तव में क्या अलग है": API अपग्रेड से पहले और बाद में प्रतिक्रिया संरचना में क्या बदलाव आया है, दो वातावरणों के बीच कॉन्फ़िगरेशन कहां भिन्न है, स्वचालित परीक्षण में वास्तविक परिणाम और अपेक्षित आधार रेखा के बीच कौन सा फ़ील्ड विचलित है। मैन्युअल लाइन-बाई-लाइन जांच धीमी और त्रुटि-प्रवण है; एक JSON Diff टूल स्वचालित रूप से अंतर को हाइलाइट कर सकता है।
JSON डिफ़ तुलना आम तौर पर दो दृष्टिकोणों का पालन करती है। एक "टेक्स्टुअल डिफ़" है: JSON को विहित मल्टी-लाइन टेक्स्ट में फ़ॉर्मेट करने के बाद, लाइन-बाई-लाइन Git डिफ़ जैसी तुलना करें, प्रति लाइन जोड़, हटाने और संशोधन को सहजता से दिखाएं। दूसरी "स्ट्रक्चरल/सिमेंटिक डिफ़" है: JSON को ट्री स्ट्रक्चर में पार्स करें और फ़ील्ड पथ (जैसे, user.address.city) के आधार पर मान और प्रकार की एक-एक करके तुलना करें, फ़ील्ड क्रम, इंडेंटेशन, या अन्य फ़ॉर्मेटिंग कारकों से अप्रभावित। यह टूल टेक्स्ट व्यू और सिमेंटिक व्यू दोनों प्रदान करता है, जिन्हें आवश्यकतानुसार स्विच किया जा सकता है।
तुलना करने से पहले फ़ॉर्मेट क्यों करें? क्योंकि समान डेटा में पूरी तरह से अलग फ़ॉर्मेटिंग हो सकती है (सिंगल लाइन बनाम मल्टी-लाइन, 2-स्पेस बनाम 4-स्पेस इंडेंट)। यदि कच्चे टेक्स्ट के रूप में सीधे तुलना की जाए, तो फ़ॉर्मेटिंग भिन्नताओं के कारण कई "झूठे अंतर" दिखाई देंगे। यह टूल तुलना से पहले दोनों पक्षों को स्वचालित रूप से पार्स और समान रूप से फ़ॉर्मेट करता है, व्हाइटस्पेस हस्तक्षेप को समाप्त करता है ताकि आप केवल वास्तव में सार्थक डेटा परिवर्तन देख सकें।
ध्यान दें कि JSON ऑब्जेक्ट में कुंजी क्रम सिमेंटिक रूप से महत्वपूर्ण नहीं है ({"a":1,"b":2} {"b":2,"a":1} के बराबर है), लेकिन ऐरे एलिमेंट क्रम महत्वपूर्ण है ([1,2] [2,1] से अलग है)। इसलिए जब आप क्रम की परवाह किए बिना केवल ऐरे सामग्री की सुसंगतता की परवाह करते हैं, तो हम तुलना से पहले ऐरे को क्रमबद्ध करने या कुंजियों को क्रमबद्ध करने की सलाह देते हैं ताकि क्रम परिवर्तनों को गलती से अंतर के रूप में पहचाने जाने से बचा जा सके।
इस टूल में सभी फ़ॉर्मेटिंग और तुलना ब्राउज़र में स्थानीय रूप से की जाती है; डेटा कभी भी सर्वर पर अपलोड नहीं किया जाता है। यह कैरेक्टर-स्तर हाइलाइटिंग, जोड़/हटाने/संशोधन गिनती, मल्टी-टैब एक साथ तुलना, और तुलना परिदृश्यों के URL साझाकरण का भी समर्थन करता है, जो API इंटीग्रेशन, कॉन्फ़िगरेशन तुलना, परीक्षण दावों और कोड समीक्षा परिदृश्यों के लिए उपयुक्त है।