Javascript 如何访问json字符串的属性
我的数据库表中有一个JSON字符串,但它的根元素名为空Javascript 如何访问json字符串的属性,javascript,jquery,asp.net,json,ajax,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":"A
{"": [
{"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);
}
}
});
}
函数Get_DataTable(){
$.ajax({
url:“GridView\u JqueryFunctionality.aspx/CallDataTable\u EmptyRootName”,
类型:“POST”,
数据:“{}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
alert(data.d)//显示json很好
var MyData=$.parseJSON(data.d);
对于(i=0;i[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 "";
}
}
[WebMethod(true)]
公共静态字符串CallDataTable_EmptyRootName(){
列表类别=新列表();
clsMenu objMenu=新的clsMenu();
DataTable dt=新的DataTable();
objMenu.GetAllMenu(dt);
如果(dt.Rows.Count>0){
字符串jsonString=ConversionExtension.DataTabelToJson(dt);
返回jsonString.ToString();
}否则{
返回“”;
}
}
它给了我
未定义的
:未定义的
。。。请帮帮我。我现在被卡住了假设您的对象有一个变量名,您可以用一个空字符串作为键引用它
var a = {
"": [
{
"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"
}
]
}
console.log(a[""]);
请尝试运行上面的代码。注意,尽管根名称为空,我们仍然可以访问objects元素。假设您的对象有一个变量名,您可以使用空字符串作为键引用它
var a = {
"": [
{
"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"
}
]
}
console.log(a[""]);
请尝试运行上面的代码。注意,尽管根对象的名称为空,我们仍然可以访问objects元素。您必须使用括号访问根对象中的no name属性,然后遍历项数组
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);
});
}
您必须使用括号访问根对象中的no-name属性,然后遍历项数组
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);
});
}
试试这个:
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);
}
}
});
}
函数Get_DataTable(){
$.ajax({
url:“GridView\u JqueryFunctionality.aspx/CallDataTable\u EmptyRootName”,
类型:“POST”,
数据:“{}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
alert(data.d)//显示json很好
var MyData=$.parseJSON(data.d)[“”];
对于(i=0;ifunction 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);
}
}
});
}
函数Get_DataTable(){
$.ajax({
url:“GridView\u JqueryFunctionality.aspx/CallDataTable\u EmptyRootName”,
类型:“POST”,
数据:“{}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
alert(data.d)//显示json很好
var MyData=$.parseJSON(data.d)[“”];
对于(i=0;i]
。我发现这是一个复制错误。使用jsonlint.com对JSON进行良好的格式化,然后将其粘贴到一个代码块中,而不是一个引号中,这样格式就会保留下来。这看起来不像是有效的JSON。您的结尾有一个不匹配的]
。我发现这是一个复制错误。使用jsonlint.com将JSON格式设置得很好,然后将其粘贴到这里的代码块中,而不是引号中,这样就可以保留格式。非常好。它解决了我的问题。非常感谢bro.boruchsiper,我还面临一个问题,请做必要的工作,因为我必须遍历此json的每个属性。请好好看看。它解决了我的问题。非常感谢bro.boruchsiper,我还面临一个问题,请做必要的工作,因为我必须遍历此json的每个属性。请好好看看。您教会了我一种访问json对象的新方法。感谢Herax,我还面临一个问题,请做必要的工作,因为我必须遍历这个json的每个属性。请好好看看。您教会了我一种访问json对象的新方法。感谢Herax,我还面临一个问题,请做必要的工作,因为我必须遍历这个json的每个属性。请看一看