2016-10-09 3 views
0

Я пытаюсь получить информацию о собственности на «Вид» в данных JSON здесь:Получить свойство объекта JSON?

https://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json

В настоящее время я просто получаю 18 «не определено» распечатывается на консоль.

Куда я иду не так?

Приветствие

$(document).ready(function(){ 
     var jsonData = $.getJSON('http://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json'); 

     for(var key in jsonData) { 
      console.log(key.kind); 
     } 
}); 
+0

Осмотрите ближе структуру JSON. Я уже вижу, что вся вещь завернута в массив, поэтому ваш результат будет в jsonData [0] по крайней мере. – EvilZebra

+0

Печать только ключевых показывает 18 клавиш console.log (ключ); скорее key.kind –

+0

проверить var jsonData, если вы получаете ответ от getJSON или нет –

ответ

1

$.getJSON возвращает promise (более конкретно, объект jqXHR который реализует интерфейс обещание), а не результаты анализа ответа HTTP как JSON.

Кроме того, когда вы перебираете объект с помощью in, значениями, которые вы получите, будут имена свойств в виде строк. Они не имеют kind.

Чтобы добраться до kind, вам необходимо указать значение, а не название собственности.

Лучше всего избегать in для массивов. forEach обычно лучше подходит.

function processResponse(parsed_data) { 
 
    parsed_data.forEach(processItem) 
 
} 
 

 
function processItem(current_value) { 
 
    console.log(current_value.kind); 
 
} 
 

 
var jqXHR = $.getJSON('http://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json'); 
 

 
jqXHR.done(processResponse);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Hi Quentin, Спасибо за подробный ответ. Я ценю его. My JS довольно простой, чтобы быть справедливым, я только сделал курс Codecademy JS. Я еще не изучил AJAX. Я просто хотел попробовать сделать простое приложение с помощью JS. Как вы думаете, я должен сначала изучить AJAX? Или какие-либо предпосылки вы рекомендуете? Спасибо –

+0

@JoeConsterdine - Так как вы пытаетесь использовать Ajax ... да, вы должны это изучить. – Quentin

+0

Я думал, что это просто JQuery haha. –

-2

печать только ключ, показывающий результат не определен. Когда вы берете ключ, он показывает ключ.

for(var key in jsonData) { 
    console.log(key); 
} 
-1

же, как Квентин, но более удобным для чтения, на мой взгляд, нет необходимости в getJSON и т.п., не прикованы без дополнительных функций

$.ajax({ 
     method: "GET", 

     url: "http://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json", 

     dataType: "json" 

    }).done(function(d) { 
     d.forEach(function(o) { 
      console.log(o.kind); 
     }); 
    }); 
-1

Вам необходимо пройти обратный вызов успеха аргумент в функцию getJson. Как сниппета ниже

var jsonData = $.getJSON('https://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json', function(response) { 
     response.forEach(function(key) { 
      console.log(key.kind) 
     }) 
     }); 

Check this JS fiddle

0

$ .getJSON должен быть записан, как показано ниже

$(document).ready(function(){ 
    var jsonData = $.getJSON('http://www.reddit.com/r/javascript/comments/29bj6h/how_to_learn_javascript_properly/.json', function(jsonData) { 
     $.each(jsonData, function(key, val) { 
     console.log(val.kind); 
     }); 
    }); 
}); 
Смежные вопросы