मैं निम्नलिखित 2 json वस्तुओं है कहते हैं:जावास्क्रिप्ट JSON तुलना/diff?
JSON A:
{
"Field A":"1",
"Field B":"2",
"Field D":"Something",
"Field E":"6"
}
JSON B:
{
"Field A":"1",
"Field B":"2",
"Field C":"3",
"Field D":"Different"
}
नमूना फंक्शन: समारोह (jsonstringA, jsonstringB)
उदाहरण (यदि JSON एक और JSON बी पैरामीटर के रूप में प्रयोग किया जाता):
रिटर्न एक नया JSON ऑब्जेक्ट युक्त:
{
"Field C":"3", // because function sees jsonstringB had no "Field C"
"Field D": "Different" // sees jsonstringB had a different value for "Field D"
}
ध्यान दें कि यह तुलना के आधार के रूप में jsonstringA का उपयोग कर रहा है आइसन, इसलिए फ़ंक्शन केवल फ़ील्ड गुम हो जाता है और jsonStringB के मान देता है। यही कारण है कि "फील्ड ई" और इसका मूल्य वापस नहीं किया गया है।
एक ऐसे फ़ंक्शन के साथ आने के लिए सबसे अच्छा तरीका क्या है जो एक जेसन ऑब्जेक्ट को बदले गए मानों को वापस लाता है?
मैंने क्या किया है: मैंने उन क्षेत्रों को मैन्युअल रूप से निर्दिष्ट करके तुलना करने की कोशिश की है जिन्हें मैं जांचने की कोशिश कर रहा हूं, लेकिन मुझे ऐसा कुछ चाहिए जो मुझे "फ़ील्ड्स" को हार्डकोड न करने की आवश्यकता हो क्योंकि यह बहुत है अक्षम और हर बार जब मैं JSON B में एक नया फ़ील्ड जोड़ता हूं, मुझे उस क्षेत्र में हार्डकोड करना पड़ता है जिसे मैं ढूंढ रहा हूं ... यही कारण है कि मैं दर्द से कम कुछ ढूंढ रहा हूं।
http://tlrobinson.net/projects/javascript-fun/jsondiff/ – Phrogz
आप इस जवाब में कोड पर कुछ आधार कर सकते हैं: http://stackoverflow.com/a/1144249/562906 – sinelaw