Ответ 1
Вы можете использовать конструкцию for..in
для итерации через произвольные свойства вашего объекта:
for (var key in obj.d) {
console.log("Key: " + key);
console.log("Value: " + obj.d[key]);
}
Вот мой 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
Вы можете использовать конструкцию for..in
для итерации через произвольные свойства вашего объекта:
for (var key in obj.d) {
console.log("Key: " + key);
console.log("Value: " + obj.d[key]);
}
Это то, что вы ищете?
var data;
for (var key in data) {
var value = data[key];
alert(key + ", " + value);
}
Используя слово "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, но здесь мы получаем наши значения без использования имени ключа или идентификатора.
см. пример
var dlist = { country: [ 'ENGLAND' ], name: [ 'CROSBY' ] }
for(var key in dlist){
var keyjson = dlist[key];
console.log(keyjson)
}
вывод:
[ 'ENGLAND' ]
[ 'CROSBY' ]