2017-02-07 3 views
0
<html> 
<head> 
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"> 
</script> 
<script> 

function readFile() { 

$.getJSON("http://www.ellatha.com/apitest.asp", function(data) { 

$("#channel").text(data['channel']['display_name']); 
$("#id").text(data['channel']['_id']); 

}); 
    } 

$(function() { 
    setInterval(function() { readFile() },1000); 
}); 

</script> 
</head> 

<body> 
<div id="channel"></div> - <div id="id"></div> 
</html> 

Я уверен, что у меня есть проблемы синтаксиса из-за того, как вложен этот JSON пример .. если кто-нибудь может помочь мне точку в правильном направлении был бы признателен! Данные Json находятся на странице asp. Я считаю, что его сырой json так не должен быть проблемой.JQuery - getJSON Форматирование справки/синтаксис

Файл Json в основном сообщает об общем количестве потоков (http://imgur.com/a/t4K3j), а затем в блоке потоков перечислены все разные точки данных для каждого потока (http://imgur.com/a/DYtiv). Я хотел бы в основном составить список всех каналов и их идентификаторов.

+0

Пробовал ли вы '$ (" # channel ") текст (данные ['streams'] ['channel'] ['display_name']); ' – jonmrich

+0

Можете ли вы предоставить вывод * raw * JSON? Может быть, он возвращает массив одного словаря. Возможно, вам понадобятся данные [0] ['channel'] ['display_name']. –

+0

Похоже, что бы это было: данные ['streams'] [0] ['channel'] ['display_name'] –

ответ

0

Вы должны сначала разобрать JSON.

var obj = jQuery.parseJSON(data); 
$("#channel").text(obj.channel.display_name); 
//OR $("#channel").text(obj.stream.channel.display_name); 
0

Глядя на ваш вывод JSON у вас есть словарю двух объектов: _total и streams.

_total является строка и streams является лист

упрощенная версия вашего вывода JSON:

{ 
    "_total": 19, 
    "streams: [ 
        { 
         "id": 0, 
         "channel": { 
            "display_name": "Daopa", 
            "game": "EVE Online" 
           } 
        }, 
        { 
         "id": 1, 
         "channel": { 
            "display_name": "Name_2", 
            "game": "League of Legends" 
           } 
        }, 
        { 
         "id": 2, 
         "channel": { 
            "display_name": "Name_3", 
            "game": "Dota 2" 
           } 
        } 
      ] 
} 

Стоит знать, что словари фигурные скобки {} и списки квадратные скобки [ ].

[Списки] на которые ссылаются их индекс, начиная с 0, а {} словари ссылаются по их ключом, например, "display_name" или "channel".

Чтобы перейти к отображаемому имени, вы начинаете с словаря потоков, который содержит список словарей. Эти словари содержат id и словарь channel, который содержит display_name.

Таким образом, чтобы получить доступ к данным:

data["streams"][0]["id"] // provides id 
data["streams"][0]["channel"]["display_name"] // provides display name 

0 является первым объектом в списке. Вы можете использовать data["streams"].length, чтобы найти количество объектов в списке, чтобы пройти через все из них.