在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} + ')');
我可以访问使用
值这个JSONjsonObj[i]
但是这给了我一个错误,如果我访问jsonObj [2],因为它不在我的json。
所以我想有一种方法来访问JSON的第一部分,即关键部分。所以我将它们存储在JS中的一个数组中,并通过它们循环。
eval是邪恶的。无论如何,如果你想通过你的JSON的属性(“键”)循环,你可以做
for(key in jsonObj) {
if(jsonObj.hasOwnProperty(key)) {
//do something with the values
// jsonObj[key]
}
}
为什么那个邪恶?你的东西也适合我。感谢Vishal – CodeMonkey 2012-07-10 01:07:27
@ user1290495:这是“邪恶的”,因为'eval'方法会执行任何*字符串中的任何内容,所以如果它包含脚本,它就会运行。另一方面,JSON解析器只接受实际上只包含JSON的字符串。 – Guffa 2012-07-10 01:22:29
正是guffa说的。此外,额外的要求是“json字符串”预计接近完美,并且即使存在小错误也会导致问题。所以它总是更好地使用像jQuery这样的外部库来为你做这件事(jQuery.parseJSON) – vishakvkt 2012-07-10 01:40:01
if (jsonObj.hasOwnProperty('2')) {
}
现代的浏览器的“静态”方法Object.keys()。对于较老的浏览器有一个垫片。然后,您可以遍历返回的键数组,如果您使用的是大多数框架,则可以使用.indexOf()或.inArray()。
你想使用jQuery框架吗? $ .parseJSON(json)。 – Tom 2012-07-10 01:06:07