Доступ к элементам объекта JSON без знания имен ключей - PullRequest
24 голосов
/ 25 февраля 2011

Вот мой json:

{"d":{"key1":"value1",
      "key2":"value2"}}

Есть ли какой-нибудь способ доступа к ключам и значениям (в javascript) в этом массиве, не зная, какие ключи есть?структурирован так, что веб-метод, который я вызываю через jquery, возвращает словарь.Если с вышеописанным невозможно работать, что мне нужно изменить в способе возврата данных?

Вот схема моего веб-метода:

<WebMethod()> _
Public Function Foo(ByVal Input As String) As Dictionary(Of String, String)
    Dim Results As New Dictionary(Of String, String)

    'code that does stuff

    Results.Add(key,value)
    Return Results
End Function

Ответы [ 4 ]

56 голосов
/ 25 февраля 2011

Вы можете использовать конструкцию for..in для перебора произвольных свойств вашего объекта:

for (var key in obj.d) {
    console.log("Key: " + key);
    console.log("Value: " + obj.d[key]);
}
9 голосов
/ 25 февраля 2011

Это то, что вы ищете?

var data;
for (var key in data) {
   var value = data[key];
   alert(key + ", " + value);
}
3 голосов
/ 22 декабря 2016

Используйте для цикла для достижения того же.

var dlist = { country: [ 'ENGLAND' ], name: [ 'CROSBY' ] }

for(var key in dlist){
     var keyjson = dlist[key];
     console.log(keyjson)
   }
2 голосов
/ 19 августа 2014

Используя слово "b", Вы все еще используете имя ключа.

var info = {
"fname": "Bhaumik",
"lname": "Mehta",
"Age": "34",
"favcolor": {"color1":"Gray", "color2":"Black", "color3":"Blue"}
};

Посмотрите на приведенный ниже фрагмент.

for(key in info) {
  var infoJSON = info[key];
  console.log(infoJSON);
}

Результат будет,

Bhaumik
Mehta
Object {color1: "Gray", color2: "Black", color3: "Blue"} 

Не хотите, чтобы появилась последняя строка?Попробуйте следующий код:

for(key in info) {
  var infoJSON = info[key];
    if(typeof infoJSON !== "object"){
       console.log(infoJSON);
  }
}

Это исключит отображение Object {color1: “Gray”, color2: “Black”, color3: “Blue”} в консоли.

Теперь нам нужно перебрать переменную infoJSON, чтобы получить значение массива.Посмотрите на следующий полный код:

for(key in info) {
    var infoJSON = info[key];
    if (typeof infoJSON !== "object"){
       console.log(infoJSON);
    }
 }

for(key1 in infoJSON) {
    if (infoJSON.hasOwnProperty(key1)) {
       if(infoJSON[key1] instanceof Array) {
          for(var i=0;i<infoJSON[key1].length;i++) {
             console.log(infoJSON[key1][i]);
          }
        } else {console.log(infoJSON[key1]);}
    }
 }

И теперь мы получили результат как

Bhaumik
Mehta
Gray
Black
Blue

Если мы используем имя ключа или идентификатор, тогда очень легко получить значения изобъект JSON, но здесь мы получаем наши значения без использования имени ключа или идентификатора.

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