JQuery не получает значение из ключа JSON

0

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

  • 0
    Когда я пробую это, я не всегда получаю Нету, я получаю неопределенное и нету. Ваш ключ не имеет свойств значения (они являются строками!). jsfiddle.net/m3gfx
Теги:

3 ответа

3
Лучший ответ

Попробуйте ввести код ниже. Значение переменной - это массив, поэтому вам нужно перебрать его, чтобы получить каждый элемент.

$.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");
       };
    });
});
2

Вы должны зацикливать массив.

Обновления:

Здесь пункт, который вам нужно посмотреть

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

0

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");
   };
});
  • 0
    Могу ли я получить это, чтобы вернуть массив вне функции, передать его в переменную? Могу ли я назначить глобальное, как var ulrs = value (); затем верните URL; ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню