从控制器到mvc视图渲染json字符串

时间:2015-06-01 17:35:02

标签: json asp.net-mvc

我的json字符串如下:

"[{\"StartTime\":\"09:00\",\"Dates\":\"05-28-2015\",\"Code\":\"DF\",\"LocationCode\":\"NY\"},{\"StartTime\":\"09:30\",\"Dates\":\"05-28-2015\",\"Code\":\"DF\",\"LocationCode\":\"NY\"},{\"StartTime\":\"10:00\",\"Dates\":\"05-28-2015\",\"Code\":\"DF\",\"LocationCode\":\"NY\"},{\"StartTime\":\"10:30\",\"Dates\":\"05-28-2015\",\"Code\":\"DF\",\"LocationCode\":\"NY\"},{\"StartTime\":\"11:30\",\"Dates\":\"05-28-2015\",\"Code\":\"DF\",\"LocationCode\":\"NY\"}]"

我需要在视图上解析这个json字符串并在表中显示数据。 我是json的新手。任何帮助将非常感激。感谢。

$("#divLoad").load("GetAvailableTimeSlots?strProvider=" + provider + "&strFrom=" + from, function (data) {
            var newStr = data.replace('"[', '').replace(']"', '').replace('[', '').replace(']', '');
            var dataArr = newStr.split('},{');
            var jsonArr = new Array(dataArr.length);
            for (var i = 0; i < dataArr.length; i++) {
                dataArr[i] = '{' + dataArr[i] + '}';
                var dataElem = dataArr[i].replace('{{', '{').replace('}}', '}');
                var jsonElem = "'" + dataElem + "'";
                jsonArr[i] = JSON.parse(jsonElem);

            }

            $(this).html(jsonArr);
        });

2 个答案:

答案 0 :(得分:0)

如果您使用的是jQuery,则可以使用jQuery.parseJSON()方法。

http://api.jquery.com/jquery.parsejson/

答案 1 :(得分:0)

只需调用JSON.parse(data)并操纵javascript对象,而不是执行容易出错的字符串操作。

function (data) {
    var locations = JSON.parse(data);
    var table = $("<ul>");
    for (var i = 0; i < locations.length; i++) {
        var row = $("<li>").text(locations[i].StartTime + " " + locations[i].Dates + " " ...);
        table.append(row);
    }
    $("#divLoad").empty().append(table);  // $(this) won't work
}

此示例使用的是无序列表,但您可以使用表标记轻松替换它。

解析后,使用console.log(locations)的Chrome开发工具中的内容如下:

console.log(locations)