【问题标题】:How can I deserialize a json string List<Dictionary<string,int>> using JQuery?如何使用 JQuery 反序列化 json 字符串 List<Dictionary<string,int>>?
【发布时间】:2013-05-31 08:29:00
【问题描述】:

非常感谢您的帮助。

我在一个操作中有以下代码,它返回一个List&lt;Dictionary&lt;string,int&gt;&gt; 的 json 序列化字符串,但我正在努力使用 JQuery 将数据转换为视图中的可用格式。我希望能够遍历每个字典。

我在使用 List 之前已经这样做了,这很有效,所以我可以假设创建一个新模型,但我确信我应该能够反序列化它。

如果有人能提出一种反序列化此数据的方法或首先发送数据的更好方法,我将不胜感激。

菜单控制器:

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

o is: 0
o is: 1

完成

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

非常感谢您的帮助。

【问题讨论】:

    标签: c# asp.net-mvc json serialization deserialization


    【解决方案1】:

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

    【讨论】:

    • 感谢您的帮助,但您的代码似乎遍历了字符串中的每个字符。警报框如下:'item:0:prop:0:value:[','item:1:prop:0:value:{','item:2:prop:0:value:“',' item : 3 : prop : 0 : value : f' 等。我不确定我是否正确使用了您的代码。
    • 啊,我想我已经成功了。您的代码有效。我只需要先解析数据 jQuery.parseJSON(data)。当我完全工作时,我将使用上面的工作代码进行更新。
    猜你喜欢
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2014-01-10
    • 2022-01-13
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多