2009-04-29 7 views
55

JSONオブジェクトのリストとしてwebserviceからリスト<を返します。私はリストを反復し、プロパティから値を取得するためにforループを使用しようとしています。これは戻ってJSONのサンプルです:ループスルーJSONオブジェクトリスト

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

だから私はこのようなものを使用して内容を抽出しようとしています:

function PrintResults(result) { 

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

はこれをどのように行うべきか?

+0

Javaでは、JsonをPOJOにマップする必要があります。これが完了したら、任意の値を取得できます。リストの場合、それを反復(ループ)し、オブジェクトを介してjson値を取得します – 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

それはすべきです。それは正しいです。 JavaScriptは大文字と小文字を区別EmployeeName –

16

もうすぐです!

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

それとも、をループする場合:あなたの結果は本当に1つのオブジェクトの配列ですされている場合は、あなたがこれを行うために必要がある場合があります

for (var prop in result) { 
    if (result.hasOwnProperty(prop)) { 
     alert(result[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を使用しているので、それぞれのmetho d ...また、このJS Object [表記法]では、すべてがプロパティ '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の例を教えてください。

編集:このようなものが1つもない場合は、JSONの構文に問題があると思われるようになります。

+0

私は解決策を難しい方法で見つけました(JQueryではありません)。私はこれをできるだけ早く試してみる。私はむしろあなたのやり方をしたいと思う。私は解決策を投稿することを確認します。 – Nick

+0

だからこれは非常に、非常に近い。今私はオブジェクトの配列をループしています。 FireBugではプロパティの値を見ることができますが、警告は "Undefined"を返すだけです。プロパティから文字列、日付などを取得するにはどうすればよいですか? – 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

関連する問題