在Javascript从JSON对象找到键值

在Javascript从JSON对象找到键值

问题描述:

我在我的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

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

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

} 

现代的浏览器的“静态”方法Object.keys()。对于较老的浏览器有一个垫片。然后,您可以遍历返回的键数组,如果您使用的是大多数框架,则可以使用.indexOf()或.inArray()。