Я хочу добавить к ответам выше, потому что у вас могут быть другие намерения от Javascript. Объект JSON и объект Javascript - это разные вещи, и вы можете захотеть перебрать свойства объекта JSON, используя решения, предложенные выше, а затем удивиться.
Предположим, что у вас есть объект JSON, такой как:
var example = {
"prop1": "value1",
"prop2": [ "value2_0", value2_1"],
"prop3": {
"prop3_1": "value3_1"
}
}
Неправильный способ перебора его «свойств»:
function recursivelyIterateProperties(jsonObject) {
for (var prop in Object.keys(example)) {
console.log(prop);
recursivelyIterateProperties(jsonObject[prop]);
}
}
Вы можете быть удивлены видеть протоколирование консоли 0
, 1
и т.д. , когда Перебор свойств prop1
и prop2
и prop3_1
. Эти объекты являются последовательностями, а индексы последовательности являются свойствами этого объекта в Javascript.
Лучший способ рекурсивно перебрать свойства объекта JSON - это сначала проверить, является ли этот объект последовательностью или нет:
function recursivelyIterateProperties(jsonObject) {
for (var prop in Object.keys(example)) {
console.log(prop);
if (!(typeof(jsonObject[prop]) === 'string')
&& !(jsonObject[prop] instanceof Array)) {
recursivelyIterateProperties(jsonObject[prop]);
}
}
}
if (typeof(obj[propt]) === 'object') {
/ * Сделай это снова * /}