使用 JQuery 解析 JSON 数组

Parsing JSON array with JQuery

提问人:Dango 提问时间:8/9/2016 最后编辑:ArnaudDango 更新时间:7/1/2019 访问量:5961

问:

我在使用 jquery 解析下面的 json 时遇到了最困难的问题。

{ "client": [{"ClientID": "0000000001", "Name": "Valdez Gilberto JR",   "Phone": "(956)542-8148" , "MedActID": "10", "Gender": "M", "Division": "WP", "Address": "1905 Illinois Ave N", "Class": "", "CityState": "Brownsville TX 78521-6732" } , {"ClientID": "0000000002", "Name": "Salazar Olga F", "Phone": "(956)546-3909" , "MedActID": "100", "Gender": "F", "Division": "MP", "Address": "Route 8 Box 626 (San Pedro)", "Class": "", "CityState": "Brownsville TX 78520" } ]}

一直在使用下面的代码,但无济于事,不断收到未定义的错误“数据”正在通过ajax调用:

var obj = JSON.parse(data);
for(var i = 0; i < obj.length; i++){
alert(obj[i].client.Name)
}

甚至尝试过以下方法:

$.each(obj, function(key,value) {
 alert(value.client.Name);
});
JavaScript JSON

评论

2赞 Kevin B 8/9/2016
要清楚..在“解析”json时,你完全没有遇到任何问题,你在循环生成的对象时遇到了问题。出于某种原因,您将对象视为数组。
0赞 Dango 8/9/2016
我该如何纠正该问题?快把我逼疯了......甚至尝试过
0赞 Kevin B 8/9/2016
右。。。但是是什么让你认为是一个数组或有一个长度?显然,您的 JSON 表示一个对象,该对象具有包含数组的属性。obj
0赞 Iceman 8/14/2016
它@Dango解决了您的问题?

答:

2赞 Swimburger 8/9/2016 #1

您应该首先获取“client”属性,它是一个数组。 一旦你抓住了它,你就可以把它作为一个数组来迭代。

{                                        //object              | obj
   "client":[                            //property (array)    | obj.client
      {                                  //object inside array | obj.client[0]
         "ClientID":"0000000001",
         "Name":"Valdez Gilberto JR",    //property            | obj.client[0].Name
         "Phone":"(956)542-8148",
         "MedActID":"10",
         "Gender":"M",
         "Division":"WP",
         "Address":"1905 Illinois Ave N",
         "Class":"",
         "CityState":"Brownsville TX 78521-6732"
      },
      {
         "ClientID":"0000000002",
         "Name":"Salazar Olga F",
         "Phone":"(956)546-3909",
         "MedActID":"100",
         "Gender":"F",
         "Division":"MP",
         "Address":"Route 8 Box 626 (San Pedro)",
         "Class":"",
         "CityState":"Brownsville TX 78520"
      }
   ]
}

此代码将循环访问“client”属性中的对象,并提醒名称。

var obj = JSON.parse(data);
var client = obj.client; //client prop is an array
for(var i = 0; i < client.length; i++){
  alert(client[i].Name);
}

评论

1赞 Dango 8/9/2016
工作非常感谢!缺少“obj.client”!
0赞 Swimburger 8/13/2016
@Dango不要忘记投票/接受答案,如果答案解决了您的问题
0赞 Swimburger 3/10/2017
同样,如果您投反对票,请提供反馈原因。这解决了@Dango遇到的问题,所以我在这里看不到任何问题。
0赞 baao 8/9/2016 #2

你正在尝试迭代一个对象,但你无法这样做。你想要的是通过你的对象中的数组进行迭代,键控client

试试这个:

for(var i = 0; i < obj.client.length; i++){
    console.log(obj.client[i].Name)
}
0赞 Iceman 8/9/2016 #3

您正在尝试遍历一个对象。 是您要查找的 Array。obj.client

var data = '{ "client": [{"ClientID": "0000000001", "Name": "Valdez Gilberto JR",   "Phone": "(956)542-8148" , "MedActID": "10", "Gender": "M", "Division": "WP", "Address": "1905 Illinois Ave N", "Class": "", "CityState": "Brownsville TX 78521-6732" } , {"ClientID": "0000000002", "Name": "Salazar Olga F", "Phone": "(956)546-3909" , "MedActID": "100", "Gender": "F", "Division": "MP", "Address": "Route 8 Box 626 (San Pedro)", "Class": "", "CityState": "Brownsville TX 78520" } ]}';
var obj = JSON.parse(data);
for (var i = 0; i < obj.client.length; i++) {
  console.log(obj.client[i].Name);
}

评论

0赞 Iceman 8/9/2016
如果您投反对票,请发表评论为什么?这效果很好!