簡體   English   中英

無法從json對象檢索特定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM