【发布时间】:2014-01-21 20:34:22
【问题描述】:
我有一个回调函数,当我从 YQL 语句返回时执行:
function cbfunc(json)
{
if (json.query.count)
{
var data = json.query.results.json;
$("#output").append(data.raw[0]["176932931"].name);
}
这是我正在使用的 JSON 对象: http://www.easports.com/iframe/fifa14proclubs/api/platforms/PS4/clubs/51694/members
我正在获取 json 的结果并将其分配给 data 变量。但是,当我尝试访问数据变量 (data.raw[0]["176932931"].name) 时,出现以下错误:data.raw[0] 未定义。
这是我 console.log(json) 时返回的内容: http://i.imgur.com/mvYMYYI.png
这是我 console.log(data); 时返回的内容; http://i.imgur.com/fxBqvSJ.png
但是,当我将 JSON 字符串直接分配给数据变量时,它可以正常工作,并且我能够访问对象的属性而没有错误:
var data = {"raw":[{"176932931":{"name":"Shipdawg","blazeId":176932931,"clubStatus":0,"onlineStatus":0,"nucleusId":2266699357,"personaName":"Shipdawg"},"182141183":{"name":"Beks8","blazeId":182141183,"clubStatus":0,"onlineStatus":0,"nucleusId":2272736228,"personaName":"Beks8"},"219929617":{"name":"ChelseaFC_26","blazeId":219929617,"clubStatus":0,"onlineStatus":0,"nucleusId":2304510098,"personaName":"ChelseaFC_26"},"457588267":{"name":"Lazy__Rich","blazeId":457588267,"clubStatus":0,"onlineStatus":0,"nucleusId":2495578386,"personaName":"Lazy__Rich"},"517570695":{"name":"x0__andrew__0x","blazeId":517570695,"clubStatus":0,"onlineStatus":1,"nucleusId":2549150176,"personaName":"x0__andrew__0x"},"912396727":{"name":"mizz00-","blazeId":912396727,"clubStatus":0,"onlineStatus":1,"nucleusId":1000118566560,"personaName":"mizz00-"},"915144354":{"name":"MisterKanii","blazeId":915144354,"clubStatus":2,"onlineStatus":0,"nucleusId":2281969661,"personaName":"MisterKanii"}}]};
通过此更改,当我使用 console.log(data) 时,我得到了一个稍微不同的对象: http://i.imgur.com/VNCcwmx.png
但我不能将其用作解决方案,因为数据变量会根据我的 YQL 语句而有所不同。
所以问题是,我打算如何访问第一个对象的属性?这个: http://i.imgur.com/fxBqvSJ.png
我已经查看了 SO 和 Google,但似乎找不到解决方案。
谢谢。
【问题讨论】:
标签: javascript arrays json properties yql