2009-04-29 24 views
55

मैं JSON ऑब्जेक्ट्स की सूची के रूप में एक webservice से एक सूची <> लौटा रहा हूं। मैं सूची के माध्यम से पुनरावृत्ति करने के लिए लूप के लिए उपयोग करने की कोशिश कर रहा हूं और गुणों से मूल्यों को पकड़ सकता हूं।JSON ऑब्जेक्ट के माध्यम से लूप सूची

function PrintResults(result) { 

for (var i = 0; i < result.length; i++) { 
    alert(result.employeename); 
} 

यह कैसे किया जाना चाहिए:

{"d":[{"__type":"FluentWeb.DTO.EmployeeOrder", 
"EmployeeName":"Janet Leverling", 
"EmployeeTitle":"Sales Representative", 
"RequiredDate":"\/Date(839224800000)\/", 
"OrderedProducts":null}]} 

तो मैं कुछ इस तरह का उपयोग कर सामग्री को निकालने के लिए कोशिश कर रहा हूँ: यह लौटने JSON का एक नमूना है?

+0

जावा में, आपको जेसन को POJO में मैप करने की आवश्यकता है। एक बार ऐसा करने के बाद आप किसी भी मूल्य को पुनः प्राप्त कर सकते हैं।यदि इसकी सूची फिर इसे फिर से (लूप) करें और ऑब्जेक्ट – Pavan

उत्तर

51

आज ही समस्या थी, आपके विषय में मदद मिली मुझे इतना यहाँ समाधान चला जाता है,)

alert(result.d[0].EmployeeTitle); 
+4

धन्यवाद। यह निष्कर्ष है कि मैं भी साथ आया था। यहां एक महान पोस्ट है जिसमें समाधान विस्तृत है। http://elegantcode.com/2009/05/04/jquery-ajax-with-class-arrays/ आशा है कि यह दूसरों की सहायता करे। – Nick

+0

उपर्युक्त टिप्पणी में लिंक मृत है – seinecle

+2

उपरोक्त टिप्पणी में लिंक अवांछित है – kojow7

64

सावधान रहें, d सूची है।

for (var i = 0; i < result.d.length; i++) { 
    alert(result.d[i].employeename); 
} 
+0

के माध्यम से जेसन मान प्राप्त करें .. लेकिन यह कुछ भी वापस नहीं करता है। – Nick

+1

यह चाहिए। वह सही है। जावास्क्रिप्ट केस संवेदनशील है। कर्मचारी नाम –

16

यह करीब है! इस प्रयास करें:

for (var prop in result) { 
    if (result.hasOwnProperty(prop)) { 
     alert(result[prop]); 
    } 
} 

अद्यतन:

अपने परिणाम सही मायने में है एक वस्तु की एक सरणी है, तो आप ऐसा करने के लिए हो सकता है:

for (var prop in result[0]) { 
    if (result[0].hasOwnProperty(prop)) { 
     alert(result[0][prop]); 
    } 
} 

या आप के माध्यम से लूप करना चाहते हैं यदि अधिक हो तो सरणी में प्रत्येक परिणाम, कोशिश करें:

for (var i = 0; i < results.length; i++) { 
    for (var prop in result[i]) { 
     if (result[i].hasOwnProperty(prop)) { 
      alert(result[i][prop]); 
     } 
    } 
} 
+1

यह मुझे करीब ले जाता है .. यह अभी भी [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट] के साथ अलर्ट .... – Nick

8

चूंकि आप jQuery का उपयोग कर रहे हैं, तो आप प्रत्येक मेथो का भी उपयोग कर सकते हैं डी ... इसके अलावा, ऐसा लगता है कि सब कुछ इस जेएस ऑब्जेक्ट [नोटेशन] में संपत्ति 'डी' का मूल्य है।

$.each(result.d,function(i) { 
    // In case there are several values in the array 'd' 
    $.each(this,function(j) { 
     // Apparently doesn't work... 
     alert(this.EmployeeName); 
     // What about this? 
     alert(result.d[i][j]['EmployeeName']); 
     // Or this? 
     alert(result.d[i][j].EmployeeName); 
    }); 
}); 

यह काम करना चाहिए। यदि नहीं, तो हो सकता है कि आप हमें JSON का लंबा उदाहरण दे सकें।

संपादित करें: यदि इनमें से कोई भी काम काम नहीं करता है तो मुझे लगता है कि आपके JSON के वाक्यविन्यास में कुछ गड़बड़ हो सकती है।

+0

मुझे समाधान को कठिन तरीका मिला (JQuery नहीं)। मैं इसे आशुलिपित करने की कोशिश करूंगा। मैं इसे अपना रास्ता दूंगा। मैं समाधान पोस्ट करना सुनिश्चित कर दूंगा। – Nick

+0

तो यह बहुत, बहुत करीब है। अब मैं वस्तुओं की सरणी के माध्यम से लूपिंग कर रहा हूँ। फायरबग में मैं गुणों में मान देख सकता हूं लेकिन अलर्ट सिर्फ "अपरिभाषित" लौटाता है। मैं गुणों से स्ट्रिंग, तिथियां इत्यादि कैसे प्राप्त कर सकता हूं? – Nick

15

संदेश यह है:

success: 
    function(data) { 
     $.each(data, function(i, item){ 
      alert("Mine is " + i + "|" + item.title + "|" + item.key); 
     }); 
    } 

नमूना JSON टेक्स्ट:

{"title": "camp crowhouse", 
"key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"} 
1

मेरे पास है निम्नलिखित कॉल:

$('#select_box_id').change(function() { 
     var action = $('#my_form').attr('action'); 
    $.get(action,{},function(response){ 
     $.each(response.result,function(i) { 

      alert("key is: " + i + ", val is: " + response.result[i]); 

     }); 
    }, 'json'); 
    }); 

संरचना की तरह सर्वर नज़र से वापस आ रहा:

{"result":{"1":"waterskiing","2":"canoeing","18":"windsurfing"}} 
6
var d = $.parseJSON(result.d); 
for(var i =0;i<d.length;i++){ 
    alert(d[i].EmployeeName); 
} 
+1

क्या आप कोड के साथ एक संक्षिप्त स्पष्टीकरण जोड़ सकते हैं? – jonsca

+0

यहां निम्न लिंक की जांच करें उम्मीद है कि यह http://encosia.com/never-worry-about-asp-net-ajaxs-d-again/ –

1

यह काम करेंगे!

$(document).ready(function() 
    { 
     $.ajax(
      { 
      type: 'POST', 
      url: "/Home/MethodName", 
      success: function (data) { 
       //data is the string that the method returns in a json format, but in string 
       var jsonData = JSON.parse(data); //This converts the string to json 

       for (var i = 0; i < jsonData.length; i++) //The json object has lenght 
       { 
        var object = jsonData[i]; //You are in the current object 
        $('#olListId').append('<li class="someclass>' + object.Atributte + '</li>'); //now you access the property. 

       } 

       /* JSON EXAMPLE 
       [{ "Atributte": "value" }, 
       { "Atributte": "value" }, 
       { "Atributte": "value" }] 
       */ 
      } 
     }); 
    }); 

इस बारे में मुख्य बात संपत्ति JSON कुंजी-मान पेयर की विशेषता के रूप में बिल्कुल वैसा ही उपयोग कर रहा है।

+0

कैसे मदद करता है? मुझे लगता है कि अब यह बेहतर समझाया गया है। –

+1

बेहतर - चिल्लाने के बिना, साथ ही। सौभाग्य! – Mogsdad

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