Как анализировать данные JSON, если имя свойства заранее не известно? - PullRequest
6 голосов
/ 16 марта 2012

Вот мой код ответа в jQuery:

var response = $.parseJSON(response);

for (var i = 0; i < response.groupIds.length; i++) {
    console.log(response.groupIds[i], i);
}

Каждый response.groupIds[i] имеет форму {"unknown name":"unknown value"}.

Я хочу получить доступ к обоим этим битам данных в javascriptКак мне это сделать, если я заранее не знаю, что, например, unknown name?

Ответы [ 2 ]

14 голосов
/ 16 марта 2012

Используйте Object.keys, чтобы получить полный список (массив) имен ключей. Полифилл доступен здесь здесь .

var group = response.groupIds[i];

var allPropertyNames = Object.keys(group);
for (var j=0; j<allPropertyNames.length; j++) {
    var name = allPropertyNames[j];
    var value = group[name];
    // Do something
}

Формат ответа на ваш вопрос содержит только одну пару ключ-значение. Код может быть уменьшен до:

var group = response.groupIds[i];
var name = Object.keys(group)[0]; // Get the first item of the list;  = key name
var value = group[name];

Если вас не интересует список, используйте петлю for-i-in с hasOwnProperty. Последний метод должен использоваться, чтобы исключить свойства, которые наследуются от прототипа.

for (var name in group) {
    if (group.hasOwnProperty(name)) {
        var value = group[name];
        // Do something
    }
}
3 голосов
/ 16 марта 2012

Используйте цикл for..in:

for( x in response.groupIds[i]) {
    // x is now your unknown key
    // response.groupIds[i][x] is the unknown value
}

Поскольку существует только одно свойство объекта, оно будет работать хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...