如何反序列化json字符串列表

本文关键字:Dictionary string 使用 JQuery 列表 反序列化 json 字符串 | 更新日期: 2023-09-27 18:16:07

事先感谢您的帮助。

我在一个返回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

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

非常感谢您的帮助

如何反序列化json字符串列表<Dictionary<string;使用JQuery

所以列表被转换为数组,字典被转换为对象,所以看起来一切都很好。在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);
     }
}