Javascript 无法从json对象检索特定值

Javascript 无法从json对象检索特定值,javascript,json,Javascript,Json,这已经困扰我至少两个小时了。基本上,我得到了这个json对象,示例值是: { "events": [ { "id": 64714, "live": false, "start": "1399117500", "league_code": "SOCENGPRE", "home_id": "30866", "away_id": "30

这已经困扰我至少两个小时了。基本上,我得到了这个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>")
}
但现在我被卡住了。我想检索主/客场/绘图值,但无法检索。我想我必须使用
oddsData.events[0]。赔率.3W
,但这不起作用,
oddsData.events[0]。赔率.home
打印出未定义的结果。我卡住了。有什么想法吗?

你应该用

oddsData.events[0]。赔率[“3W”]。home

您可以像
oddsData.events[0].赔率.3W.home那样编写它,但3W不是有效的属性名称(名称不能以数字开头),因此它被放在方括号中


另外,要了解完整的命名规则集,请在MDN上阅读。您可以在javascript对象上使用数组语法。这看起来像是
oddsData.events[0]。赔率[“3W”]
可以使用
[]
语法访问它。不能使用
语法访问以数字开头的属性名称

oddsData.events[0].odds['3W']

3W
不是有效的标识符,因为它以数字开头,因此不能使用点表示法访问它。您将能够通过以下方式访问对象:


有效标识必须以unicode字母、
$
\
\
开头。有关更多信息,请参见

如果对象或数组键不满足变量命名规则或匹配保留javascript关键字(如“var”、“each”、“length”等),则经验法则是使用
[]
语法访问这些键


即使javascript不会在这个问题上出错,它仍然会产生逻辑或运行时错误。

是否可以包含一个JSFIDLE
3w
不是有效标识符,至少从
oddsData.events[0]开始。赔率[“3w”]
开始。
oddsData.events[0].odds['3W'].home
oddsData.events[0].odds['3W']