दिलचस्प पोस्ट
SwingUtilities.invokeLater () क्यों इसकी आवश्यकता है? कैसे एक AngularJS निर्देश में परिभाषित विधि कॉल करने के लिए? सभी सबव्यूज़ निकालें? बड़े कैनवास के लिए canvas.toDataURL () सरणी को जावास्क्रिप्ट में मूल्य से कॉपी करना एक साधारण स्ट्रिंग से टाइम्डेल्टा ऑब्जेक्ट का निर्माण कैसे करें SQL सर्वर में पिछले महीने के रिकॉर्ड प्राप्त करें पायथन 2.7 से पहले डिक्की समझ के लिए वैकल्पिक जावा "गर्म अप" समय को कम करने के लिए तकनीक या उपयोगिता? .NET के लिए स्वत: अद्यतन लाइब्रेरी? संसाधन और संसाधन विधियों के बीच का अंतर एएसपी को मेमोरीस्ट्रीम बाँध कैसे करें: छवि नियंत्रण? मैं एसवीएन कमिट को कैसे वापस करूँ? वीडियो की शुरुआत और अंत में धुंधलापन से बचना (सेटप्ररिफर्ड वीडियो सेटिंग मोड का उपयोग करने के बाद भी: AVCaptureVideoStabilizationModeAuto)? FirebaseUser प्रोफ़ाइल अद्यतन नहीं है

जावास्क्रिप्ट कैसे JSON सरणी को पार्स करने के लिए

मैं सर्वर से JSON संदेश प्राप्त करने के लिए सीनाचा टच (एक्स्टजेएस) का उपयोग कर रहा हूं। मुझे जो संदेश मिलता है वह यह है:

{ "success": true, "counters": [ { "counter_name": "dsd", "counter_type": "sds", "counter_unit": "sds" }, { "counter_name": "gdg", "counter_type": "dfd", "counter_unit": "ds" }, { "counter_name": "sdsData", "counter_type": "sds", "counter_unit": " dd " }, { "counter_name": "Stoc final", "counter_type": "number ", "counter_unit": "litri " }, { "counter_name": "Consum GPL", "counter_type": "number ", "counter_unit": "litri " }, { "counter_name": "sdg", "counter_type": "dfg", "counter_unit": "gfgd" }, { "counter_name": "dfgd", "counter_type": "fgf", "counter_unit": "liggtggggri " }, { "counter_name": "fgd", "counter_type": "dfg", "counter_unit": "kwfgf " }, { "counter_name": "dfg", "counter_type": "dfg", "counter_unit": "dg" }, { "counter_name": "gd", "counter_type": "dfg", "counter_unit": "dfg" } ] } 

मेरी समस्या यह है कि मैं इस JSON ऑब्जेक्ट को पार्स नहीं कर सकता ताकि मैं प्रत्येक काउंटर ऑब्जेक्ट का उपयोग कर सकूं।

मैं यह कोशिश कर रहा हूं कि इस तरह से:

 var jsonData = Ext.util.JSON.decode(myMessage); for (var counter in jsonData.counters) { console.log(counter.counter_name); } 

मैं क्या गलत कर रहा हूं ? धन्यवाद!

Solutions Collecting From Web of "जावास्क्रिप्ट कैसे JSON सरणी को पार्स करने के लिए"

जावास्क्रिप्ट में स्ट्रिंग्स के लिए JSON पार्स में एक निर्मित है, जो मुझे लगता है कि आपके पास क्या है:

 var myObject = JSON.parse("my json string"); 

आपके उदाहरण के साथ इसका उपयोग करने के लिए होगा:

 var jsonData = JSON.parse(myMessage); for (var i = 0; i < jsonData.counters.length; i++) { var counter = jsonData.counters[i]; console.log(counter.counter_name); } 

यहाँ एक काम उदाहरण है

संपादित करें : लूप के लिए आपके उपयोग में कोई गलती नहीं है (मैं अपनी पहली पढ़ाई पर यह भूल गया, स्थान के लिए ईट पर क्रेडिट करें)। फॉर-इन लूप का प्रयोग करके var को वर्तमान लूप का प्रॉपर्टी नाम दिया जाएगा, न कि वास्तविक डेटा। सही उपयोग के लिए ऊपर दिए गए मेरा अद्यतन लूप देखें

महत्वपूर्ण : JSON.parse विधि पुरानी पुराने ब्राउज़र्स में काम नहीं करती – इसलिए यदि आप अपनी वेबसाइट को कुछ समय के लिए इंटरनेट कनेक्शन झुकाते हुए उपलब्ध कराने की योजना बना रहे हैं, तो यह एक समस्या हो सकती है! अगर आप वास्तव में रुचि रखते हैं, तो यहां एक समर्थन चार्ट है (जो मेरे सभी बक्से को टिकता है)।

फॉर-इन-लूप में चलने वाले प्रॉपर्टी का नाम रखता है, न कि संपत्ति का मान।

 for (var counter in jsonData.counters) { console.log(jsonData.counters[counter].counter_name); } 

लेकिन काउंटर के रूप में एक अर्रे है, आपको एक सामान्य लूप का उपयोग करना होगा:

 for (var i=0; i<jsonData.counters.length; i++) { var counter = jsonData.counters[i]; console.log(counter.counter_name); } 

यह मेरा जवाब है,

 <!DOCTYPE html> <html> <body> <h2>Create Object from JSON String</h2> <p> First Name: <span id="fname"></span><br> Last Name: <span id="lname"></span><br> </p> <script> var txt = '{"employees":[' + '{"firstName":"John","lastName":"Doe" },' + '{"firstName":"Anna","lastName":"Smith" },' + '{"firstName":"Peter","lastName":"Jones" }]}'; //var jsonData = eval ("(" + txt + ")"); var jsonData = JSON.parse(txt); for (var i = 0; i < jsonData.employees.length; i++) { var counter = jsonData.employees[i]; //console.log(counter.counter_name); alert(counter.firstName); } </script> </body> </html> 

सर्वर डेटा के साथ इंटरैक्ट करने के लिए " Ext.data.Store एक Ext.data.Store स्थापित कर रहा है एक Ext.data.proxy.Proxy (इस मामले में Ext.data.proxy.Ajax ) द्वारा प्रॉक्सी एक Ext.data.proxy.Proxy साथ सुसज्जित (JSON- एन्कोडेड डेटा के लिए, अन्य रीडर भी उपलब्ध हैं)। डेटा को वापस सर्वर पर लिखने के लिए कई प्रकार के Ext.data.writer.Writer एस है

यहां एक सेटअप का उदाहरण यहां दिया गया है:

  var store = Ext.create('Ext.data.Store', { fields: [ 'counter_name', 'counter_type', 'counter_unit' ], proxy: { type: 'ajax', url: 'data1.json', reader: { type: 'json', idProperty: 'counter_name', rootProperty: 'counters' } } }); 

data1.json इस उदाहरण में ( इस बेला में भी उपलब्ध है) में आपका डेटा शब्दशः शामिल होता है idProperty: 'counter_name' शायद इस मामले में वैकल्पिक है लेकिन आमतौर पर प्राथमिक कुंजी विशेषता पर अंक rootProperty: 'counters' निर्दिष्ट करता है कि किस संपत्ति में डेटा आइटम्स की सरणी है

स्टोर सेटअप के साथ इस तरह से आप store.load() को कॉल करके सर्वर से डेटा फिर से पढ़ सकते हैं। आप किसी भी सीना टच के उपयुक्त यूआई घटकों जैसे ग्रिड, सूचियों या रूपों में स्टोर को भी तार कर सकते हैं।

आपको ExtJs में एक डेटास्टोर और प्रॉक्सी का उपयोग करना चाहिए इसके बहुत सारे उदाहरण हैं, और JSON रीडर स्वचालित रूप से आपके द्वारा विनिर्दिष्ट मॉडल में JSON संदेश को पार्स करता है।

ExtJs का उपयोग करते समय मूल जावास्क्रिप्ट का उपयोग करने की कोई आवश्यकता नहीं है, सब कुछ अलग है, आपको एक्स्टजे के तरीकों का उपयोग करके सबकुछ ठीक हो जाना चाहिए। वहाँ दस्तावेज ध्यान से पढ़ें, यह अच्छा है।

वैसे, इन उदाहरणों में सेन्चा टच (विशेषकर v2) है, जो कि एक्स्टजेज़ के रूप में एक ही मूल कार्य पर आधारित है।

मेरे लिए कुछ और बात ..

 var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}'; var contact = JSON.parse(jsontext); document.write(contact.surname + ", " + contact.firstname); document.write(contact.phone[1]); // Output: // Aaberg, Jesper // 555-0100 

संदर्भ: https://docs.microsoft.com/en-us/scripting/javascript/reference/json-parse-function-javascript