У меня действительно маленькая программа jquery, которая пытается получить значение fom key. Файл JSON выглядит так:
{
"Key1": [
"http://a.com",
"http: //b.com",
"http://c.net"
],
"Key2": [
"http://a.com",
"http: //b.com",
"http://c.net"
],
"Key3": [
"http://a.com",
"http: //b.com",
"http://c.net"
]
}
Я пытаюсь получить значение одного ключом. Вот мой код:
$.getJSON('url_dict.json', function(json) {
$.each(json, function(key, value) {
if (key == "Key1") {
console.log(key.value);
} else {
console.log("Nope");
};
});
});
Все, что я когда-либо получаю, это Nope. Если я изменю его на ключ, значение, они распечатывают его в порядке. У меня проблема только в том случае, если я попытаюсь развернуть ключ.
Попробуйте ввести код ниже. Значение переменной - это массив, поэтому вам нужно перебрать его, чтобы получить каждый элемент.
$.getJSON('url_dict.json', function(json) {
$.each(json, function(key, value) {
if (key == "Key1") {
$.each(value, function(k, v) {
console.log(v);
});
} else {
console.log("Nope");
};
});
});
Вы должны зацикливать массив.
Здесь пункт, который вам нужно посмотреть
key1 //is a string
[ "http://a.com", "http: //b.com", "http://c.net"] // an array
Следовательно, итерация значения не ключа
if (key == "Key1") {
for (var i = 0; i < value.length; i++) {
console.log(value[i]);
}
} else {
console.log("Nope");
};
Вот JSFiddle
key.value на самом деле выходит "undefined", за которым следуют два "Nope's
Вы можете получить массив из Key1 следующим образом:
$.each(json, function(key, value) {
if (key == 'Key1') {
console.log(value); //or value[0] will give you: http://a.com
} else {
console.log("Nope");
};
});