2009-04-29 7 views
55

웹 서비스에서 List <을 JSON 객체 목록으로 반환합니다. for 루프를 사용하여 목록을 반복하고 속성에서 값을 가져 오려고합니다. Loop through JSON object 목록

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

Java에서는 Json을 POJO에 매핑해야합니다. 일단 이것이 끝나면 어떤 가치라도 얻을 수 있습니다.그것의 목록 ​​다음 iterate (반복) 및 객체를 통해 json 값을 얻을 – Pavan

답변

51

당신의 주제는 나를 이렇게 여기에 솔루션을 이동 도움, 오늘 같은 문제가 없었다 다음 전화 :

$('#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"}} 
+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

해야합니다. 맞아요. JavaScript는 대소 문자를 구분합니다. EmployeeName –

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]); 
    } 
} 

또는 당신을 반복 원한다면 이상이있는 경우 배열의 각 결과는 시도 : 당신이 jQuery를 사용하고 있기 때문에

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

이게 나를 가까이에 가져옵니다. [object Object], [object Object] ...와 함께 경고 만 남았습니다. – Nick

8

, 당신은뿐만 아니라 각각의 운전 방식을 사용할 수 있습니다 d ... 또한,이 JS Object [Notation]에서 모든 것이 'd'속성의 값인 것처럼 보입니다.

$.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 구문에 문제가있을 수 있다고 생각하기 시작했습니다.

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

샘플 JSON 텍스트 : 내가 가지고있는

{"title": "camp crowhouse", 
"key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"} 
+0

해결책이 JQuery가 아니라는 것을 알게되었습니다. 나는 이것을 최대한 빨리 시도 할 것이다. 나는 오히려 그것을 당신의 방법으로 할 것입니다. 나는 해결책을 게시 할 것입니다. – Nick

+0

이렇게 아주 가깝습니다. 이제 객체 배열을 반복하고 있습니다. FireBug에서 속성의 값을 볼 수 있지만 경고는 "정의되지 않음"을 반환합니다. 속성에서 문자열, 날짜 등을 어떻게 얻을 수 있습니까? – Nick

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