JSON की संरचनात्मक तुलना

दो JSON संरचनाओं की तुलना करें और स्पष्ट पथों पर जोड़े, हटाए या बदले गए मान देखें। संख्याओं का लिखा हुआ रूप बिना राउंड किए सुरक्षित रहता है।

यह पृष्ठ वर्तमान दायरे में इस भाषा के उपलब्ध टूल दिखाता है। इसका अर्थ यह नहीं कि साइट के सभी टूल हर भाषा में अनूदित हैं।

प्रसंस्करण स्थानीय है; इनपुट अपलोड या अपने-आप सहेजे नहीं जाते। प्रत्येक इनपुट की सीमा UTF-8 में 256 KiB और कुल सीमा 512 KiB है; गहराई 32, प्रति इनपुट 30,000 मान, 2000 अंतर और 1 MiB की रिपोर्ट। तुलना 5 सेकंड बाद रुक जाती है।

ऑब्जेक्ट की कुंजियों का क्रम अनदेखा किया जाता है। ऐरे की तुलना इंडेक्स के अनुसार होती है; तत्वों के स्थान बदलने का पता नहीं लगाया जाता। संख्याओं की तुलना उनके लिखे हुए रूप से होती है: 1, 1.0 और 1e0 अलग हैं; बड़ी संख्याओं को राउंड नहीं किया जाता। तुलना के लिए JSON स्ट्रिंग डिकोड की जाती हैं, लेकिन Unicode सामान्यीकरण नहीं किया जाता। किसी शाखा का प्रकार बदलने, उसे जोड़ने या हटाने पर पूरी शाखा वाली एक पंक्ति बनती है।

तुलना के इनपुट

इस्तेमाल का तरीका

पहले और बाद के JSON पाठ पेस्ट करें, फिर तुलना करें। प्रत्येक बदलाव का प्रकार, पथ और पहले/बाद का JSON पाठ देखें; ज़रूरत पर पूर्वावलोकन के पृष्ठ बदलें। अपनी इच्छा से पूरी रिपोर्ट कॉपी करें या json-diff.json के नाम से डाउनलोड करें। किसी इनपुट को संपादित करने से पिछला परिणाम अमान्य हो जाता है; रिपोर्ट किसी भी इनपुट की जगह नहीं लेती।

उदाहरण आज़माएँ

पहले: {"n":1,"a":[1,2]}; बाद में: {"a":[2,1],"n":1.0}। तीन बदलाव हैं: /n में पाठ 1 से पाठ 1.0, /a/0 में 1 से 2 और /a/1 में 2 से 1। केवल ऑब्जेक्ट की दो कुंजियों का क्रम बदलने से कोई बदलाव नहीं जुड़ता। कुंजी a/b~c पथ /a~1b~0c पर दिखाई देती है।

समर्थन और सीमाएँ

ऑब्जेक्ट की कुंजियों का क्रम अनदेखा किया जाता है, लेकिन ऐरे की तुलना इंडेक्स के अनुसार होती है; तत्वों के स्थान बदलने या सेट के मिलान का अनुमान नहीं लगाया जाता। संख्याओं की तुलना उनके मूल लिखे हुए रूप से होती है: 1, 1.0 और 1e0 अलग हैं और उन्हें कभी Number में नहीं बदला जाता। तुलना के लिए JSON स्ट्रिंग डिकोड की जाती हैं, लेकिन Unicode सामान्यीकरण नहीं किया जाता। किसी शाखा को जोड़ने, हटाने या उसका प्रकार बदलने पर पूरी शाखा वाली एक पंक्ति बनती है। खाली पथ रूट को दर्शाता है; JSON Pointer में ~ को ~0 और / को ~1 से एस्केप किया जाता है। रिपोर्ट के before और after फ़ील्ड कॉम्पैक्ट JSON वाली स्ट्रिंग हैं, राउंड किए गए संख्यात्मक मान नहीं। उस ओर का मान अनुपस्थित होने पर फ़ील्ड नहीं दिया जाता, जबकि JSON null को "null" स्ट्रिंग से दर्शाया जाता है। रिपोर्ट अंतरों का वर्णन करती है; बदलाव लागू करने के लिए यह JSON Patch नहीं है। प्रसंस्करण ब्राउज़र में ही होता है; JSON सामग्री चलाई या अपलोड नहीं की जाती और उसे अपने-आप सहेजा या कॉपी नहीं किया जाता।

अक्सर पूछे जाने वाले सवाल

क्या बराबर परिणाम का अर्थ है कि दोनों पाठ बाइट-दर-बाइट समान हैं?

नहीं। स्ट्रिंग के बाहर का खाली स्थान, ऑब्जेक्ट की कुंजियों का क्रम और वर्णों के एस्केप का लिखा हुआ रूप अलग हो सकते हैं, फिर भी इन नियमों के अनुसार मान बराबर रह सकते हैं। तब changes सूची खाली होती है और रिपोर्ट को फिर भी कॉपी या डाउनलोड किया जा सकता है। इसके विपरीत, किसी संख्या का लिखा हुआ रूप या ऐरे के तत्वों का क्रम अलग हो तो उसे अंतर माना जाता है, भले ही अर्थ मिलता-जुलता लगे।

संबंधित टूल