получить ключи json-объекта в JavaScript [дубликат]
этот вопрос уже есть ответ здесь:
- получение списка ключей объектов JavaScript 14 ответов
У меня есть JSON-объект в JavaScript, и я хочу получить ключи, используемые в нем. Мой JavaScript-код выглядит так:
var jsonData = [{"person":"me","age":"30"},{"person":"you","age":"25"}];
и я хочу цикл, который предупреждает меня "человек" и "возраст", которые являются ключами первый объект в JSON-массив.
3 ответа:
[то, что у вас есть, это просто объект, а не "json-объект". JSON - это текстовая нотация. То, что вы процитировали, - это код JavaScript с использованием инициализатор массива и объект инициализатор (aka, "синтаксис объектного литерала").]
если вы можете положиться на наличие функций ECMAScript5, вы можете использовать
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
чтобы проверить, что свойство принадлежит непосредственно объекту, а не наследуется.(Я мог бы сделать это без самоисполняющейся функции, но я предпочитаю свои функции имена, и быть совместимым с IE ты не может использовать именованные выражения функций [ну, не без большой помощи]. Таким образом, самоисполняющаяся функция существует, чтобы избежать того, чтобы объявление функции создавало глобальный символ.)
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); } }
EDIT
var jsonObj = {"person":"me","age":"30"}; Object.keys(jsonObj); // returns ["person", "age"]
Object
естьproperty
keys
возвращаетArray
ключи отObject
Chrome, FF & Safari поддерживает
Object.keys