2013-06-23 59 views
0

接收未定義值。根據我以前post,我想從一個名爲winners.json JSON文件,其格式與此類似獲得了一個名字:從JSON

{"driver":[ 
     { 
     "Year":1984, 
     "Name":"Name1", 
     }, 
     { 
     "Year":1985, 
     "Name":"Name2", 
     }, 
    [etc...] 
    ]} 

在JavaScript文件,我從滑塊中獲得一個值,那將是我想要在JSon文件中搜索的年份。使用控制檯,該值的類型是「數字」。但是,當我走遍JSON搜索的一年,控制檯說,在JSON的「年」字段進行定義的值,所以我不能讓「名稱」字段:

​​

的VAR LEN被正確讀取。我試着做一個演員號碼(winners.winner [i] .Year),但是我得到了NaN值。

謝謝。

+0

你可以把你使用的確切winners.json文件? – SheetJS

+0

對不起,我在questio中混合了2個項目,它不是驅動程序數組,它是優勝者數組。的JSON是正確地形成 { 「勝利者」:[ { 「年」:1984, 「名稱」: 「NAME1」, }, { 「年」:1985, 「名稱」: 「NAME2」 , }, [等等] ]} –

+0

你可以把這個小提琴? – DevelopmentIsMyPassion

回答

0

假設你的代碼類似於以下內容:

var jsondata = '{"winner":[ { "Year":1984, "Name":"Name1" }, { "Year":1985, "Name":"Name2" }]'; 

console.info(jsondata.length)  

for (var i=0; i < len; i++) { 
    console.info("Reading line " + i + " Type: " + typeof(jsondata.winner[i].Year) + " Year: " + 
    winners.winner[i].Year); 
} 

然後,它是正確的,因爲len變量將返回一個正整數,這會不會不過是數組元素的數量在你的JSON,而是在字符串中的字符數。正如@Nirk所提到的,是需要JSON.parse(jsondata);呼叫打開JSON字符串轉換成JavaScript對象。

+0

我從不同的文件中獲取的JSON,winners.json用$ .getJSON(「winners.json」,功能(優勝者){...});所有的代碼都在裏面。我需要解析嗎? –