JSON डिफ़

दो JSON दस्तावेज़ पेस्ट करें — बदले पाथ तुरंत दिखते हैं, कोई बटन नहीं, कोई अपलोड नहीं।

इसका उपयोग कैसे करें

  1. पुराना JSON «मूल JSON» में और नया «बदला हुआ JSON» में पेस्ट करें — हर जोड़ा, हटाया या बदला पाथ टाइप करते ही दिखता है, कोई बटन नहीं दबाना है।
  2. कुंजी क्रम, 1 vs 1.0, 1e0 vs 1 और \u00e9 vs é अंतर नहीं हैं: तुलना संरचनात्मक है। फ़ॉर्मेटिंग या कुंजी क्रम के बदलाव देखने हों तो टेक्स्ट डिफ़ टूल इस्तेमाल करें।
  3. «डिफ़ कॉपी करें» से पूरी सूची ले जाएँ: हर पंक्ति +, - या ~ से शुरू होती है, फिर पाथ और पूरा मान, टिकट या ईमेल के लिए तैयार।

उदाहरण

दो दस्तावेज़

【मूल】
{"order":"A-2026-001","customer":{"name":"अनन्या","city":"दिल्ली"},"total":1299.5,"paid":false}

【बदला हुआ】
{"order":"A-2026-001","customer":{"name":"अनन्या","city":"मुंबई"},"total":1399.0,"paid":true,"coupon":"WELCOME10"}

अंतर

+ $.coupon "WELCOME10"
~ $.customer.city "दिल्ली" → "मुंबई"
~ $.total 1299.5 → 1399.0
~ $.paid false → true
(+1 ~3 −0)

【मूल】/【बदला हुआ】 पंक्तियाँ उदाहरण के शीर्षक हैं; असली उपयोग में दोनों दस्तावेज़ दो इनपुट बॉक्स में जाते हैं। सिर्फ़ असली मान बदलाव सूचीबद्ध हैं: अपरिवर्तित ऑर्डर संख्या और ग्राहक नाम नहीं दिखते, और कुंजी क्रम कभी अंतर नहीं होता।

नियम, सीमाएँ और ज्ञात समस्याएँ

  • यह संरचनात्मक डिफ़ है, टेक्स्ट डिफ़ नहीं: ऑब्जेक्ट की कुंजी क्रम अनदेखा होता है; 1, 1.0 और 1e0 एक ही संख्या हैं; "\u00e9" और "é" एक ही स्ट्रिंग हैं। फ़ॉर्मेटिंग बदलाव मायने रखते हों तो टेक्स्ट डिफ़ टूल इस्तेमाल करें।
  • संख्याओं की तुलना सटीक दशमलव के रूप में होती है, कभी JavaScript Number से नहीं: 9007199254740993 सटीक रहता है और 1e400 Infinity नहीं बनता। सूची संख्या फिर भी ठीक वैसी दिखाती है जैसी आपने टाइप की।
  • स्ट्रिंग की तुलना उनके डिकोड किए मान से होती है और मानक JSON रूप में दिखती हैं; डुप्लीकेट कुंजियाँ अंतिम मान रखती हैं, जैसे JSON.parse करता है, और चेतावनी बताती है कि कितने डुप्लीकेट मिले।
  • ऐरे क्रमबद्ध हैं: इन्सर्शन और डिलीशन संरेखित होते हैं, इसलिए ऊपर एक आइटम जोड़ना एक «+» पंक्ति है, हर बाद वाले आइटम का बदलाव नहीं। मूव्स एक हटाना और एक जोड़ना बताते हैं, और «ऐरे क्रम अनदेखा करें» विकल्प नहीं है।
  • पूरा सबट्री जोड़ना या हटाना एक पाथ है। बहुत लंबे मान स्क्रीन पर «ऑब्जेक्ट · N कुंजियाँ» या «ऐरे · N आइटम» के रूप में दिखते हैं, जबकि «डिफ़ कॉपी करें» में हमेशा पूरा मान होता है।
  • «डिफ़ कॉपी करें» सादा-टेक्स्ट बदलाव सूची (+ / - / ~, पाथ, पूरा मान) बनाता है, JSON Patch नहीं। ऐरे इन्सर्शन और डिलीशन बाद के इंडेक्स खिसका देते हैं, इसलिए सीधा-सादा JSON Patch लागू नहीं होता।
  • पाथ $.a.b[0] रूप का उपयोग करते हैं। हटाए आइटम अपने पुराने इंडेक्स की ओर इशारा करते हैं; जोड़े और बदले आइटम नए दस्तावेज़ की ओर।
  • सीमाएँ: मिलाकर 2,00,000 कैरेक्टर से ऊपर परिणाम टाइप करना रोकने के लगभग 0.6 s बाद अपडेट होता है; 10,00,000 कैरेक्टर से बड़ा एक दस्तावेज़ या 256 स्तरों से गहरी नेस्टिंग त्रुटि बताई जाती है, कभी काटी नहीं जाती। संरेखण सीमा से बड़े ऐरे इंडेक्स से तुलना होते हैं और सूचना बताती है; ज़्यादा से ज़्यादा 400 बदलाव पंक्तियाँ रेंडर होती हैं, पर कॉपी में हमेशा पूरी सूची मिलती है।
  • कोई फ़ाइल अपलोड नहीं, कोई URL लोडिंग नहीं, कोई JSON Schema या JSONPath क्वेरी नहीं, कोई इतिहास नहीं और कोई शेयर लिंक नहीं। सब कुछ आपके ब्राउज़र में चलता है: कुछ अपलोड या संग्रहीत नहीं होता।
  • चीनी, जापानी और कोरियाई पेजों पर «फ़ुल-विड्थ विराम चिह्न» डिफ़ॉल्ट रूप से चालू है: स्ट्रिंग के बाहर के विराम चिह्न ASCII में बदले जाते हैं, जबकि स्ट्रिंग के अंदर की सामग्री ठीक वैसी रहती है जैसी टाइप की गई।

दोनों दस्तावेज़ों की तुलना हो जाने के बाद लोग आमतौर पर यह चाहते हैं।