Zugriff aus JSON via API

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Dave1337.

    Zugriff aus JSON via API

    Guten Tag,

    ich probiere hier schon den ganzen Tag rum und komme nicht weiter :(

    Ich will über eine API auf eine JSON-Datei zugreifen und nur gewisse Felder auslesen. Mit dem Code den ich bis jetzt habe kann ich auch soweit das Ganze File auslesen, aber wenn ich nur auf ein Token verweise bekomme ich eine Fehlermeldung.

    Ich bekomme den Fehler "Newtonsoft.Json.Linq.JToken.SelectToken(...) hat Nothing zurückgegeben."



    VB.NET-Quellcode

    1. Imports Newtonsoft.Json
    2. Imports Newtonsoft.Json.Linq
    3. Imports System.IO
    4. Imports System.Net
    5. Private Sub btnLoadIMVDb_Click(sender As Object, e As EventArgs) Handles btnLoadIMVDb.Click
    6. Dim url As String = "Http://imvdb.com/api/v1/search/videos?q=Abba+Mamma+Mia"
    7. Dim request As HttpWebRequest = HttpWebRequest.Create(url)
    8. request.Proxy = Nothing
    9. request.UserAgent = "test"
    10. Dim response As HttpWebResponse = request.GetResponse
    11. Dim Stream As System.IO.Stream = response.GetResponseStream
    12. Dim StreamReader As New System.IO.StreamReader(Stream)
    13. Dim Data As String = StreamReader.ReadToEnd
    14. StreamReader.Close()
    15. Dim jsonObject As JObject = JObject.Parse(Data)
    16. Console.WriteLine("Song: " & jsonObject.SelectToken("song_title").ToString)
    17. End Sub


    Hat jemand einen Tipp für mich?

    Vielen Dank
    David

    CodeTags korrigiert ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Die verschieden Song-Titles stecken im Array "results". Das Root-Object kennt keinen "song_title" und wirft daher den Fehler. Das Root-Object kennt nur "results".

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Async Function GetData() As Task
    3. Using wC As New WebClient() With {.Proxy = Nothing}
    4. Dim data As String = String.Empty
    5. Try
    6. data = Await wC.DownloadStringTaskAsync("http://imvdb.com/api/v1/search/videos?q=Abba+Mamma+Mia")
    7. Catch ex As Exception
    8. Return
    9. End Try
    10. If data <> String.Empty Then
    11. Dim j As JObject = JObject.Parse(data)
    12. For i = 0 To j.SelectToken("results").Count() - 1
    13. MessageBox.Show(j.SelectToken("results")(i).SelectToken("song_title").ToString())
    14. Next
    15. End If
    16. End Using
    17. End Function
    18. Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    19. Await GetData()
    20. End Sub
    21. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o