2013-08-22 5 views
13

क्या एक JSON सरणी में विभिन्न कुंजी/मान जोड़े के ऑब्जेक्ट्स हो सकते हैं।क्या JSON सरणी में विभिन्न कुंजी/मान जोड़े के ऑब्जेक्ट्स हो सकते हैं?

{ 
"example": [ 
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName":"Jones" } 
] 
} 

मैं JSON सारणी के अंदर अलग कुंजी/मान जोड़े के लिए इसे बदलना चाहते हैं, तो निम्नलिखित अभी भी एक है: this tutorial से, उदाहरण JSON सारणी के लिए दिए गए एक ही मुख्य/मान जोड़े की वस्तुओं के होते हैं वैध JSON?

{ 
"example": [ 
{ "firstName":"John", "lastName":"Doe" }, 
{ "fruit":"apple" }, 
{ "length":100, "width":60, "height":30 } 
] 
} 

बस इसकी पुष्टि करना चाहते हैं। यदि हां, तो मैं यह जानने के लिए जावास्क्रिप्ट का उपयोग कैसे कर सकता हूं कि JSON "example" फ़ील्ड में पहली सजातीय वस्तुएं या दूसरी विषम वस्तुएं हैं या नहीं?

+3

हाँ, json सरणियों किसी वैध json स्ट्रिंग हो सकते हैं: अलग कुंजी/मान जोड़े, अन्य सारणियों, संख्या, तार, सभी एक ही सरणी में बूलियन्स साथ वस्तुओं। – arnaud576875

+0

अपनी इच्छानुसार किसी भी जावास्क्रिप्ट का परीक्षण करने के लिए यहां जाएं: http://jsconsole.com/ – dmoss18

+0

न केवल यह पुराना है, यह अभ्यास पहले से ही लेख प्रकाशित होने से 13 साल पहले गलत था। –

उत्तर

11

आप अपनी पसंद की किसी भी संरचना का उपयोग कर सकते हैं। जेएसओएन स्कीमा नहीं है जिस तरह से XML का अक्सर उपयोग किया जाता है और जावास्क्रिप्ट को स्थाई रूप से टाइप नहीं किया जाता है।

आप JSON.parse का उपयोग कर एक जे एस वस्तु को अपने JSON परिवर्तित कर सकते हैं और फिर बस संपत्ति

var obj = JSON.parse(jsonString); 
if(typeof obj.example[0].firstName != "undefined") { 
    //do something 
} 
+0

धन्यवाद। परीक्षण करने का सबसे अच्छा तरीका क्या है कि JSON सरणी में समरूप वस्तुएं हैं या नहीं? – tonga

+1

@ टोंगा आप इस तरह से सरणी की एकरूपता का परीक्षण करने में सक्षम नहीं होंगे। आप केवल यह जान सकते हैं कि सरणी एकजुट है जब तक कि आप अपने सभी आइटम –

+0

को संसाधित नहीं कर लेते हैं, जवाब सही है, लेकिन एक्सएमएल के बारे में बयान गलत है ... एक्सएमएल एक प्रसिद्ध ज्ञात और बहुत स्पष्ट परिभाषा पर आधारित है लेकिन यह ऊपर तक है यदि आप स्कीमा का उपयोग करना चाहते हैं या नहीं, तो यह एक विकल्प है। –

5

इससे कोई फर्क नहीं पड़ता कि आप जितना चाहें मिश्रण और मिलान कर सकते हैं।

तुम बस का परीक्षण कर सकते यह

typeof someItem.example !== 'undefined' // True if `example` is defined. 
+0

धन्यवाद। यदि सरणी में समरूप वस्तुएं हैं या नहीं, तो क्या यह दृष्टिकोण परीक्षण कर सकता है? जावास्क्रिप्ट का उपयोग कर JSON सरणी की एकरूपता का परीक्षण करने का सबसे अच्छा तरीका क्या है? – tonga

+1

@ टोंगा यह इसे फिर से शुरू करेगा। –

+0

तो सरणी का परीक्षण करने के लिए कोई भी अंतर्निहित जेएस फ़ंक्शन नहीं है? – tonga

1

यह पूरी तरह से वैध JSON है। व्यक्तिगत तौर पर मैं इस वाक्य बेहतर पसंद करते हैं, क्योंकि यह आसान पढ़ता है:

{ 
    "example": [ 
     { 
      "firstName": "John", 
      "lastName": "Doe" 
     }, 
     { 
      "fruit": "apple" 
     }, 
     { 
      "length": 100, 
      "width": 60, 
      "height": 30 
     } 
    ] 
} 

के रूप में अपने दूसरे सवाल का जवाब देने के लिए, आप var data = JSON.parse(datastring); का उपयोग करके JSON स्ट्रिंग से डेटा पढ़ सकते हैं। फिर बस data.property.secondlevel पर कॉल करके इसका उपयोग करें। कोई भी चर एक ऑब्जेक्ट, सरणी, स्ट्रिंग या संख्या हो सकता है, जो नेस्टेड संरचनाओं के लिए अनुमति देता है।

+0

यदि आप डाउनवोट करते हैं, तो मुझे कम से कम _why_ पता चलो। मैंने सवाल पढ़ लिया है और इसे कम करने का मुद्दा नहीं देखा है? – Broxzier

+0

शायद सुधार के लिए मूल प्रश्न में एक संपादन का सुझाव है? हालांकि मेरा डाउनवोट नहीं है ... – hurrymaplelad

1

के अस्तित्व आप क्या आप सरणी की सामग्री के साथ करना चाहते हैं के लिए स्वतंत्र हैं का परीक्षण करें। इससे पहले कि आप अपनी सरणी में प्रत्येक आइटम के एक्सेस गुणों को पुन: प्रयास करने का प्रयास करें, इसके बारे में जस याद रखें।

एक बात: आप इसे अपने सर्वर की ओर से किसी ऑब्जेक्ट की सरणी की तुलना में किसी अन्य चीज़ के लिए deserialize करने में सक्षम नहीं होंगे, इसलिए बाद में आश्चर्य की बात नहीं है।

एक संकेत के रूप में, शायद आप "प्रकार" निर्दिष्ट वस्तुओं में एक सामान्य फ़ील्ड शामिल कर सकते हैं ताकि बाद में प्रक्रिया करना आसान हो।

var array = [{"type":"fruit", "color":"red"}, 
{"type":"dog", "name":"Harry"}]; 

var parser = { 
    fruit:function(f){ 
    console.log("fruit:" + f.color); 
    }, 
    dog: function(d){ 
    console.log("dog:"+d.name); 
    }}; 

for(var i=0;i<array.length;i++){ 
    parser[array[i].type](array[i]); 
} 
संबंधित मुद्दे