从json对象读取列表

时间:2012-12-06 04:17:17

标签: json asp.net-mvc-3 asp.net-mvc-4

我尝试从json读取列表,这里是我的代码: -

List<EmailProvider> list = new List<EmailProvider>();
        XmlDocument doc = new XmlDocument();
        doc.Load(Server.MapPath("~/WidgetXml.xml"));
        XmlElement root = doc.DocumentElement;
        XmlNodeList nodes = root.SelectNodes("//widget");

        foreach (XmlNode node in nodes)
        {
            EmailProvider obj = new EmailProvider();
            obj.Name = node["Name"].InnerText;
            obj.left = Convert.ToInt32(node["left"].InnerText);
            obj.Id = node["id"].InnerText;
            obj.IsVisible = Convert.ToBoolean(node["isActive"].InnerText);
            long s = Int64.Parse(node["top"].InnerText);
            obj.top = s;
            obj.desc = node["desc"].InnerText;
            list.Add(obj);
        }
        var result = list.OrderBy(p => p.IsVisible).ToList();
        return result.ToArray();

并在视图上: -

 $(document).ready(function () {
        $.post(siteUrl.getSiteUrl + '/Admin/ReadXml/', function (data) {
            alert(data.length);
            var st = JSON.stringify(data);
            alert(st.length);
        });
    });    

长度总是显示54但在数组中只有4个项目。我如何从json对象的json读取数组中的所有recors。

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试使用控制器方法Json

从控制器方法返回JsonResult
var result = list.OrderBy(p => p.IsVisible).ToList();
return Json(result.ToArray());

在JavaScript上,你应该只需要遍历数组:

$(document).ready(function () {
    $.post(siteUrl.getSiteUrl + '/Admin/ReadXml/', function (data) {
        for(var i = 0;i < data.length; i++){
            alert(data[i].Name);
        }
    });
});