0

ご協力いただきありがとうございます。

のjsonシリアル化された文字列を返すアクションに次のコードがありますが、List<Dictionary<string,int>>JQueryを使用してビューでデータを使用可能な形式にするのに苦労しています。各辞書を反復できるようにしたい。

リストを使用する前にこれを行ったので、新しいモデルを作成できると思いますが、これを逆シリアル化できるはずです。

誰かがこのデータを逆シリアル化する方法、または最初にデータを送信するより良い方法を提案できれば幸いです。

メニューコントローラー:

public JsonResult Populate(string id) {
    // Get and process data, creating all, a List<Dictionary<string,int>>
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    string json = serializer.Serialize((object)all);
    return Json(json, JsonRequestBehavior.AllowGet);
}

JavascriptSerielizer を使用する代わりに次のことも試しましたが、同じ結果が得られました。

return Json(JsonConvert.SerializeObject(all), JsonRequestBehavior.AllowGet);

cshtmljquery:

<script type="text/javascript">
    $.get('@Url.Action("Populate","Menu")', { id: "MO" }, function (data) {
        console.log(data);
        var obj = jQuery.parseJSON(data);
        console.log('obj: ' + obj);
        for (var o in obj) {
            console.log('o is: ' + o);
        }    
    })
    .done(function (d) {
        console.log('done: ' + d);
    })
    .fail(function (d) {
        console.log('fail: ' + d);
    });
</script>

コンソールで私は得る:

データ

[{"foo":2,"bar":0,"ray":3,"doh":1},{"mee":1,"so":0,"lah":2,"far":0}]

オブジェクト

obj: [object Object],[object Object]

o

o is: 0
o is: 1

終わり

done: [{"foo":2,"bar":0,"ray":3,"doh":1},{"mee":1,"so":0,"lah":2,"far":0}]

助けてくれて本当にありがとうございます。

4

1 に答える 1

0

したがって、リストは配列に、辞書はオブジェクトに変換されるため、すべてが正常に機能しているように見えます。Javascript では、2 つのオブジェクトを含む配列が渡されます。次のように、各オブジェクト (翻訳された辞書) を繰り返すことができます。

var data;// your downloaded JSON object
for(var i = 0;i < data.length; ++i) //for enumerating array
{
     var obj = data[i];
     for(var propName in obj) //for enumerating the properties of an object
     {
         var value = obj[propName];
         alert("item : " + i + " : prop : " + propName + " : value : " + value);
     }
}
于 2013-05-31T08:37:21.190 に答える