Доступ к элементам объекта JSON без знания имен ключей

Вот мой json:

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

Есть ли способ доступа к ключам и значениям (в javascript) в этом массиве, не зная, что это за клавиши?

Причина, по которой мой json структурирован так, заключается в том, что веб-метод, который я вызываю через 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

Ответы

Ответ 1

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

for (var key in obj.d) {
    console.log("Key: " + key);
    console.log("Value: " + obj.d[key]);
}

Ответ 2

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

var data;
for (var key in data) {
   var value = data[key];
   alert(key + ", " + value);
}

Ответ 3

Используя слово "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, но здесь мы получаем наши значения без использования имени ключа или идентификатора.

Ответ 4

см. пример

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

for(var key in dlist){
     var keyjson = dlist[key];
     console.log(keyjson)
   }

вывод:

[ 'ENGLAND' ]
[ 'CROSBY' ]