2012-07-10 81 views
0

我在我的javascript代碼,像哈瓦一個JSON對象:在Javascript從JSON對象找到鍵值

{"0" : "Jul 09, 2012 05:05 PM", "3" : "Jul 09, 2012 05:08 PM"} 

我已經破譯使用

var jsonObj = eval('(' + {/literal}{$json}{literal} + ')'); 

我可以訪問使用

值這個JSON
jsonObj[i] 

但是這給了我一個錯誤,如果我訪問jsonObj [2],因爲它不在我的json。

所以我想有一種方法來訪問JSON的第一部分,即關鍵部分。所以我將它們存儲在JS中的一個數組中,並通過它們循環。

+0

你想使用jQuery框架嗎? $ .parseJSON(json)。 – Tom 2012-07-10 01:06:07

回答

2

eval是邪惡的。無論如何,如果你想通過你的JSON的屬性(「鍵」)循環,你可以做

for(key in jsonObj) { 
    if(jsonObj.hasOwnProperty(key)) { 
    //do something with the values 
    // jsonObj[key] 
    } 
} 
+0

爲什麼那個邪惡?你的東西也適合我。感謝Vishal – CodeMonkey 2012-07-10 01:07:27

+2

@ user1290495:這是「邪惡的」,因爲'eval'方法會執行任何*字符串中的任何內容,所以如果它包含腳本,它就會運行。另一方面,JSON解析器只接受實際上只包含JSON的字符串。 – Guffa 2012-07-10 01:22:29

+0

正是guffa說的。此外,額外的要求是「json字符串」預計接近完美,並且即使存在小錯誤也會導致問題。所以它總是更好地使用像jQuery這樣的外部庫來爲你做這件事(jQuery.parseJSON) – vishakvkt 2012-07-10 01:40:01

0
if (jsonObj.hasOwnProperty('2')) { 

} 
0

現代的瀏覽器的「靜態」方法Object.keys()。對於較老的瀏覽器有一個墊片。然後,您可以遍歷返回的鍵數組,如果您使用的是大多數框架,則可以使用.indexOf()或.inArray()。