2013-03-04 8 views
16

मैं JSON सरणी तत्व की लंबाई गिनने की कोशिश कर रहा हूं। मुझे json.array.length का उपयोग करके सरणी की लंबाई गिनना है। यह जानने की जरूरत है कि प्रत्येक सूचकांक में कितनी वस्तुएं हैं।JSON सरणी तत्व की लंबाई की गणना कैसे करें

अगर मेरे सरणी है:

{"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"2","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"3","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"4","a":"sss","b":"sss","question":"whi?"}]} 

तब मैं {"id":"1","a":"sss","b":"sss","question":"whi?"} की लंबाई खोजने की जरूरत है। इसमें चार वस्तुएं हैं। मैंने data.shareInfo[i].length के साथ यह कोशिश की। लेकिन यह त्रुटि पैदा करता है।

किसी को भी मुझे बता कृपया कैसे लंबाई को खोजने के लिए .... धन्यवाद ....

+0

क्या यह JSON, या वास्तविक सरणी में है? – Brad

+0

कोई जेसन सरणी जैसी कोई चीज़ नहीं है। जेसन ** STRINGS ** है। यदि यह एक सरणी है, तो यह मूल जावास्क्रिप्ट है और "जेसन" नहीं है। –

उत्तर

38

प्रयास करना चाहिए एक बार इस Documentation पढ़ जवाब देने के लिए जाने से पहले। फिर आप उत्तर को स्पष्ट रूप से समझते हैं।

इसे आजमाएं यह आपके लिए काम कर सकता है।

Object.keys(data.shareInfo[i]).length 
+0

धन्यवाद यह मेरे लिए काम करता है ... बहुत बहुत धन्यवाद ... –

+0

यह केवल IE9 + के लिए समर्थित है ... –

9

पहले अगर वस्तु आप साथ काम कर रहे एक स्ट्रिंग है तो आप तो की लंबाई यह पता लगाने में यह पार्स करने के लिए की जरूरत है कुंजियाँ:

obj = JSON.parse(jsonString); 
shareInfoLen = Object.keys(obj.shareInfo[0]).length; 
+0

यह त्रुटि उत्पन्न करता है 'shareInfo' परिभाषित नहीं किया गया है। लेकिन मेरे पास 'shareInfo' –

+0

@ahjmorton नामक सरणी है जिसका उत्तर' जावास्क्रिप्ट 'सरणी के लिए सही है। यदि यह जेसन सरणी है तो यह 'ऑब्जेक्ट.कीज (डेटा.शारेइन्फो [i]) होना चाहिए। लंबाई' – james

-1

मुझे लगता है कि आप

data = {"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"}, 
{"id":"2","a":"sss","b":"sss","question":"whi?"}, 
{"id":"3","a":"sss","b":"sss","question":"whi?"}, 
{"id":"4","a":"sss","b":"sss","question":"whi?"}]}; 

ShareInfoLength = data.shareInfo.length; 
alert(ShareInfoLength); 
for(var i=0; i<ShareInfoLength; i++) 
{ 
alert(Object.keys(data.shareInfo[i]).length); 
} 
0

सबसे पहले, JSON ऑब्जेक्ट जैसी कोई चीज़ नहीं है। JSON एक स्ट्रिंग प्रारूप है जिसे जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक के प्रतिनिधित्व के रूप में उपयोग किया जा सकता है।

के बाद से JSON एक स्ट्रिंग है, जावास्क्रिप्ट एक स्ट्रिंग की तरह यह व्यवहार करेगा, और नहीं एक वस्तु की तरह (या सरणी या जो भी आप के रूप में उपयोग करने के लिए कोशिश कर रहे हैं।)

यहाँ इस स्पष्ट करने के लिए एक अच्छा JSON संदर्भ है अंतर:

http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/

तो अगर आप काम में अपने प्रश्न में उल्लेख किया है, केवल एक चीज आप ऐसा एक कस्टम पार्सर लिखते हैं, या किसी ऑब्जेक्ट को JSON स्ट्रिंग परिवर्तित कर सकता है पूरा की जरूरत है। इसे पूरा करने के लिए कई पुस्तकालय हैं। संदर्भ के लिए http://www.json.org/js.html पर देखें।

+0

आप सही हैं। लेकिन हम JSONarray का उपयोग करके सर्वर से मूल्यों को पारित कर सकते हैं। संग्रह के लिए हमें 'JSONarray' - >> फिर' toJsonTree' 'बनाने की आवश्यकता है, फिर हम' ऑब्जेक्ट' को 'स्ट्रिंग' में परिवर्तित कर सकते हैं। ग्राहक पक्ष में हम उपर्युक्त परिणाम प्राप्त करेंगे। (प्रश्न में सरणी के रूप में)। – james

संबंधित मुद्दे