JSON Diff
दो JSON documents के लिए structural diff — जोड़े गए, हटाए गए, बदले गए keys और value परिवर्तन साथ-साथ दिखाए गए।
परिणाम देखने के लिए ऊपर इनपुट डालें।
JXXR1 द्वारा बनाया गया · ♥ स्पॉन्सर करें · ☕ मुझे coffee दिलाएं
यह किसके लिए है?
JSON पर plain-text diff आपको बताता है कि कौन सी पंक्तियाँ बदलीं; structural diff आपको बताता है कि कौन से data points बदले। ये अक्सर बहुत अलग होते हैं — बिना semantic बदलाव के पुनः format किया गया document text diff के लिए "हर पंक्ति अलग है" होता है लेकिन यहाँ "कोई बदलाव नहीं"। यह टूल दोनों JSON trees पर चलता है और हर path को रिपोर्ट करता है जहाँ वे भिन्न होते हैं, RFC 6901 JSON Pointer syntax (/users/0/name) का उपयोग करते हुए ताकि formatting की परवाह किए बिना output स्पष्ट हो।
कब इस्तेमाल करें
- दो API responses की तुलना करना ताकि देखा जा सके कि release में वास्तव में क्या बदला, whitespace/key-order noise को नज़रअंदाज़ करते हुए।
- Migration से पहले/बाद config files को diff करना यह पुष्टि करने के लिए कि केवल इच्छित fields बदले हैं।
- RFC 6902 JSON Patch document generate करना जो इसका समर्थन करने वाले system को भेजा जा सके (PATCH endpoints, JSON-Merge-Patch fallbacks)।
- दो test fixtures को देखकर पता लगाना कि एक fail क्यों होता है जबकि दूसरा pass होता है।
आम गलतियाँ
- Array compare mode मायने रखता है। "By index" एक insert किए गए element को इसके बाद की हर चीज़ के लिए remove+add के रूप में रिपोर्ट करता है। "By value" arrays को sets की तरह treat करता है, असली reorderings को miss कर देता है। वह चुनें जो आपके data के क्रमबद्ध होने के तरीके से मेल खाता हो।
- Number-vs-string structural नहीं है।
{"id": 1}और{"id": "1"}change के रूप में दिखते हैं क्योंकि types अलग हैं। यदि यह मायने रखता है तो diff से पहले types को normalise करें। - RFC 6902 एक one-way patch है, merge नहीं। इसे असली RFC 6902 implementation के साथ apply करें, string-replacement से नहीं।
- बड़े trees noisy हो जाते हैं। यदि diff सैकड़ों operations लंबा है, तो आप शायद दो असंबंधित documents की तुलना कर रहे हैं — inputs को फिर से जाँचें।