簡體   English   中英

我如何反序列化json字符串列表 <Dictionary<string,int> &gt;使用JQuery?

[英]How can I deserialize a json string List<Dictionary<string,int>> using JQuery?

在此先感謝您的幫助。

我在執行以下操作的代碼中返回了List<Dictionary<string,int>>的json序列化字符串,但是我正在努力使用JQuery將數據轉換為視圖中的可用格式。 我希望能夠遍歷每本字典。

我在使用有效的List之前已經完成了此操作,所以我可以假設創建一個新模型,但是我確信我應該能夠對此進行反序列化。

如果有人可以建議一種反序列化此數據的方法,或者首先是一種更好的發送數據的方法,我將不勝感激。

MenuController:

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

cshtml jquery:

<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 is: 0
o is: 1

完成

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

非常感謝您的幫助。

因此,列表被轉換為數組,字典被轉換為對象,因此看起來一切正常。 在Javascript中,您已獲得一個包含兩個對象的數組。 您可以如下迭代每個對象(即翻譯后的字典):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM