JSON पर एक पाठ diff सही की तुलना में गलत चीज़ की रिपोर्ट अधिक बार करता है। एक फ़ाइल को फिर से व्यवस्थित करें, या किसी प्रॉपर्टी को नीचे से ऊपर ले जाएं, और एक लाइन-आधारित diff दर्जनों बदली हुई लाइनों के रूप में रोशन हो जाता है भले ही डेटा समान है। आप वास्तव में यह जानना चाहते हैं कि क्या मान बदले, न कि क्या बाइट्स बदले।
JSON diff उपकरण का उपयोग करना
मूल दस्तावेज़ को पहले में पेस्ट करें और बदला हुआ दस्तावेज़ बाद में, फिर तुलना करें दबाएं। परिणाम में प्रत्येक अंतर मान का पथ और बदलाव के दोनों पक्ष ले जाता है, इसलिए आप “+ और - चिह्न” गिनने के बजाय “$.b ‘x’ से ‘y’ में बदला” पढ़ रहे हैं।
तुलना करें
{"a":1,"b":"x","c":true,"nested":{"n":1.0}}
बनाम
{"b":"y","c":true,"d":"new","nested":{"n":1}}
ठीक तीन अंतरों की रिपोर्ट करता है: $.a हटाया गया, $.b "x" से
"y" में बदला, और $.d जोड़ा गया। कुछ और नहीं। $.c समान है और
दिखाई नहीं देता। $.nested.n भी दिखाई नहीं देता, क्योंकि 1.0 और 1
एक ही संख्या का मतलब रखते हैं।
ऑब्जेक्ट्स और एरे जानबूझकर अलग तरह से क्यों तुलना किए जाते हैं
ऑब्जेक्ट्स को अव्यवस्थित माना जाता है, क्योंकि JSON विनिर्देश यही कहता है कि वे हैं: नाम और मान के जोड़ों का एक सेट जिसमें कोई परिभाषित क्रम नहीं है। एक ऑब्जेक्ट की कुंजियों को फिर से व्यवस्थित करना यहाँ बदलाव नहीं है, और एक diff उपकरण जो इसे एक के रूप में रिपोर्ट करे वह डेटा पर नहीं, प्रारूप पर रिपोर्ट कर रहा होगा।
एरे की स्थिति से तुलना की जाती है, क्योंकि वह उपलब्ध एकमात्र ईमानदार व्याख्या है। उपकरण यह नहीं जान सकता कि आपने एक सूची के बीच में एक तत्व जोड़ा या उसके बाद हर तत्व को फिर से लिखा, इसलिए यह अनुमान नहीं लगाता। एक लंबे एरे की शुरुआत के पास एक आइटम जोड़ने से कई स्थितिगत बदलाव दिखाई देंगे, जो सही है भले ही यह पहली बार में चौंकाने वाला लगे।
समान क्या गिना जाता है
1 और 1.0 एक ही मान हैं, और एक स्ट्रिंग में एक escape की दो
अलग-अलग वर्तनी एक ही स्ट्रिंग हैं। एकमात्र जगह जहाँ यह कठोर होता
है वह लंबे पूर्णांक हैं: दो बीस-अंकों की संख्याओं को समान कहने से
पहले अंक-दर-अंक मेल खाना होता है, क्योंकि एक JavaScript double उन्हें
अद्वितीय रूप से प्रस्तुत नहीं कर सकता और एक diff जो चुपचाप दो अलग
लंबी IDs को एक ही संख्या मान ले वह सक्रिय रूप से गलत होगा। तीनों
नियम पृष्ठ पर घोषित हैं, क्योंकि एक diff जो चुपचाप निर्णय ले वह
एक है जिस पर आप कार्रवाई नहीं कर सकते।
पक्ष बदलें
यदि आपने दस्तावेज़ गलत क्रम में पेस्ट किए हैं, पक्ष बदलें बिना कुछ भी फिर से टाइप किए तुलना को पलट देता है, जो यह भी बदल देता है कि किस पक्ष के विरुद्ध जोड़ या हटाने की रिपोर्ट की जाती है।