如何访问json字符串的属性

时间:2017-08-14 20:45:50

标签: javascript jquery asp.net json ajax

我有一个来自我的数据库表的JSON字符串,但它有空的根元素名称

{"": [
  {"ID":18,"MenuName":"dsadasdasd","IsActive":"InActive"},
  {"ID":17,"MenuName":"Karachi","IsActive":"Active"},
  {"ID":2,"MenuName":"User Management","IsActive":"Active"},
  {"ID":1,"MenuName":"Home","IsActive":"Active"}
]}

我正在尝试使用以下jquery ajax调用方法

访问此JSON
function Get_DataTable() {
    $.ajax({
        url: "GridView_JqueryFunctionality.aspx/CallDataTable_EmptyRootName",
        type: "POST",
        data: '{}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            alert(data.d) // showing json is fine
            var MyData = $.parseJSON(data.d);
            for (i = 0; i < Object.keys(MyData).length; i++) {
                alert(MyData[i].ID + ' : ' + MyData[i].MenuName);
            }
        }
    });
}

我的Webmethod

[WebMethod(true)]
public static string CallDataTable_EmptyRootName(){    
    List<Category> Categories = new List<Category>();
    clsMenu objMenu = new clsMenu();
    DataTable dt = new DataTable();
    objMenu.GetAllMenu(dt);
    if (dt.Rows.Count > 0){
        string jsonString = ConversionExtension.DataTabelToJson(dt);            
        return jsonString.ToString();           
    }else{
        return "";
    }
}

它正在给我undefinedundefined ...请帮助我。我现在被困了

3 个答案:

答案 0 :(得分:1)

假设您的对象具有变量名称,则可以使用空字符串作为键来引用它。

np.shape()

尝试运行上面的代码通知,尽管有一个空的根名称,我们仍然可以访问对象元素。

答案 1 :(得分:1)

您必须使用括号访问根对象中的无名属性,然后遍历项目数组。

success: function(response) {
  var data = $.parseJSON(response.d);
  var list = data[""];
  list.forEach(function(item, i) {
    console.log(item);
    console.log(item.ID, ' -> ', item.MenuName);
  });
}

答案 2 :(得分:1)

试试这个:

function Get_DataTable() {
    $.ajax({
        url: "GridView_JqueryFunctionality.aspx/CallDataTable_EmptyRootName",
        type: "POST",
        data: '{}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            alert(data.d) // showing json is fine
            var MyData = $.parseJSON(data.d)[""];

            for (i = 0; i < MyData.length; i++) {
                alert(MyData[i].ID + ' : ' + MyData[i].MenuName);
            }
        }
    });
}