[英]Cannot retrieve a specific value from a json object
现在至少困扰了我两个小时。 基本上,我有这个json对象,示例值为:
{
"events": [
{
"id": 64714,
"live": false,
"start": "1399117500",
"league_code": "SOCENGPRE",
"home_id": "30866",
"away_id": "30860",
"home_name": "West Ham",
"away_name": "Tottenham",
"odds": {
"3W": {
"home": "4.15",
"away": "1.88",
"draw": "3.60"
}
},
},
{
"id": 64712,
"live": false,
"start": "1399125600",
"league_code": "SOCENGPRE",
"home_id": "30792",
"away_id": "30856",
"home_name": "Stoke",
"away_name": "Fulham",
"odds": {
"3W": {
"home": "2.32",
"away": "3.10",
"draw": "3.35"
}
},
},...
这行代码:
prettyprintJSON(oddsData.events[0].odds);
指的是:
function prettyprintJSON (jsondata) {
// prints a human readable form of JSON
pretty = JSON.stringify(jsondata, null, 4);
$("#resultsbox").html("<pre>"+pretty+"</pre>")
}
打印输出:
{
"3W": {
"home": "4.15",
"away": "1.88",
"draw": "3.60"
}
}
但是现在我被卡住了。 我想检索原点/离开/绘制值,但不能。 我认为我必须使用oddsData.events[0].odds.3W
但这不起作用,并且oddsData.events[0].odds.home
打印出未定义的内容。 我被卡住了。 有任何想法吗?
您可以在javascript对象上使用数组语法。 这样看起来就像oddsData.events[0].odds["3W"]
。
3W
不是有效的标识符,因为它以数字开头,因此您不能使用点符号来访问它。 您将能够使用以下方法访问该对象:
oddsData.events[0].odds['3W']
有效的标识符必须以unicode字母$
, \\
或_
开头。 有关更多信息,请参见http://www.ecma-international.org/ecma-262/5.1/#sec-7.6
你应该用
oddsData.events[0].odds["3W"].home
您可能像oddsData.events[0].odds.3W.home
这样写,但3W不是有效的属性名称(名称不能以数字开头),因此将其放在方括号中
另外,要了解完整的命名规则集,请在MDN https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Values、_variables、_and_literals中阅读
可以使用[]
语法进行访问。 以数字开头的属性名称无法使用来访问.
句法。
oddsData.events[0].odds['3W'].home
经验法则是使用[]
语法访问对象或数组键,如果这些键不满足变量命名规则或不匹配保留的javascript关键字,例如“ var”,“ each”,“ length”等。
即使javascript不会中断,它仍然会产生逻辑或运行时错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.