在JavaScript中获取json对象的键

我有一个JavaScript的json对象,我想获得使用的密钥。 我的JavaScript代码如下所示:

var jsonData = [{"person":"me","age":"30"},{"person":"you","age":"25"}]; 

我想要一个提醒我'人'和'年龄'的循环,这是json-Array中第一个对象的关键。

[你有什么只是一个对象,而不是一个“json对象”。 JSON是一个文本符号。 你引用的是使用数组初始值设定项和对象初始值设定项的JavaScript代码(又名“对象字面值语法”)。]

如果您可以依赖ECMAScript5function,则可以使用Object.keys函数在对象中获取一组键(属性名称)。 请注意,旧的浏览器不会有它。 如果没有,这是你可以提供自己的一个:

 if (typeof Object.keys !== "function") { (function() { var hasOwn = Object.prototype.hasOwnProperty; Object.keys = Object_keys; function Object_keys(obj) { var keys = [], name; for (name in obj) { if (hasOwn.call(obj, name)) { keys.push(name); } } return keys; } })(); } 

这使用for..in循环 ( 更多信息在这里 )来遍历对象所有的属性名称,并使用Object.prototype.hasOwnProperty来检查该属性是否直接由对象拥有,而不是被inheritance。

(我可以在没有自执行function的情况下完成它,但是我更喜欢我的函数有名字 ,并且与IE兼容,所以你不能使用命名的函数expression式 [很好,不是很小心],所以自执行函数是为了避免函数声明创build一个全局符号。)

 var jsonData = [{"person":"me","age":"30"},{"person":"you","age":"25"}]; for(var i in jsonData){ var key = i; var val = jsonData[i]; for(var j in val){ var sub_key = j; var sub_val = val[j]; console.log(sub_key); } } 

编辑

 var jsonObj = {"person":"me","age":"30"}; Object.keys(jsonObj); // returns ["person", "age"] 

Object具有property keys ,从该Object返回一个键Array

Chrome,FF和Safari支持Object.keys

工作代码在这里http://jsfiddle.net/gbsandeep/2TmaG/

 var jsonData = [{person:"me", age :"30"},{person:"you",age:"25"}]; for(var obj in jsonData){ if(jsonData.hasOwnProperty(obj)){ for(var prop in jsonData[obj]){ if(jsonData[obj].hasOwnProperty(prop)){ alert(prop + ':' + jsonData[obj][prop]); } } } }