Итерация через Twitch Json

Я еще не очень хорош в этом, не уверен, что мой предмет даже точно описывает то, что мне нужно. Я знаю, что на него, вероятно, ответили, мне трудно понять ответы, поскольку они не относятся напрямую к моим данным. Я пытаюсь понять, как я могу перебирать данные в этом URL-адресе.

http://tmi.twitch.tv/group/user/twitch/chatters

Это то, что я использовал.

Dim url = "http://tmi.twitch.tv/group/user/" & ConnectionInformation.Channel.TrimStart("#") & "/chatters"
Dim json As String = Nothing
Dim wc As New WebClient()
json = wc.DownloadString(url)

Dim root As JToken = JToken.Parse(json)
For Each item As JToken In root("chatters")
'I've tried several things here and I can't find a good way to iterate through the viewers found here.        
Next

Я предполагаю, что у меня возникли проблемы с получением зрителей в коллекции, чтобы я мог их перебирать, может ли кто-нибудь указать мне правильное направление здесь?

Спасибо.


person Josh    schedule 17.06.2015    source источник


Ответы (1)


«Chatters» на самом деле является типом в корневом объекте. Если бы вы создавали классы, они бы выглядели так:

Public Class RootChatter
    Public Property _links As _Links
    Public Property chatter_count As Integer
    Public Property chatters As Chatters
End Class

Public Class _Links
End Class

Public Class Chatters
    Public Property moderators As String()
    Public Property staff As String()
    Public Property admins As String()
    Public Property global_mods As String()
    Public Property viewers As String()
End Class

Зрители — это массив в свойстве Chatters (Root.Chatters.Viewers). Без класса:

Dim root As JToken = JToken.Parse(jstr)
Dim chatters = root("chatters")("viewers")

For n As Integer = 0 To chatters.Count - 1
    Console.WriteLine(chatters(n))
Next

Выход:

04paynem
0morningstar0
0rchlann
0riginus
10108abc

Если бы вы должны были десериализовать классы:

Dim jc = JsonConvert.DeserializeObject(Of RootChatter)(jstr)
Dim viewers = jc.chatters.viewers
person Ňɏssa Pøngjǣrdenlarp    schedule 17.06.2015
comment
Это должно быть невероятным подспорьем. Это даже помогает объяснить, о чем говорили некоторые другие темы. Я не понимал, что вижу 2 способа снять шкуру с кошки. - person Josh; 17.06.2015
comment
Я думаю, что всегда полезно просмотреть формат класса, чтобы понять отношения и т. д., даже если вы собираетесь использовать JToken.Parse. Мне просто кажется, что это легче читать, чем закодированную строку JSON. Если вы скопируете свой JSON в буфер обмена, меню «Правка» — «Специальная вставка» — «Вставить JSON как классы» создаст классы для вас — иногда вам придется что-то настраивать, но это дает вам быструю отправную точку. - person Ňɏssa Pøngjǣrdenlarp; 17.06.2015
comment
Да, это помогает увидеть эти отношения, хотя вы потеряли меня из-за меню редактирования. Вы говорите о том, что внутри Visual Studio? Я не вижу эти специальные параметры вставки. - person Josh; 17.06.2015
comment
Если у вас есть строка JSON (данные) в буфере обмена, VS создаст классы из строки. Может в вашей версии его нет - у меня 2012, но не уверен, когда его добавили. jsonutils.com — онлайн-конвертер — классы VB или C# - person Ňɏssa Pøngjǣrdenlarp; 17.06.2015