Ein bestimmtes Wort ausschneiden (JSON)

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ein bestimmtes Wort ausschneiden (JSON)

    Guten Tag,
    Ich möchte, dass man bei meinem Programm sieht, ob ein oder mehrere Streamer online sind.
    Sogut habe ich alles gemacht, bis das ausschneiden.

    Mein Code ist bisher:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. If (isOnline("Schmugglaaa")) Then
    3. FlatLabel18.Text = "online"
    4. Else
    5. FlatLabel18.Text = "offline"
    6. End If
    7. End Sub
    8. Private Function isOnline(ByVal username As String) As Boolean
    9. Dim a As New System.Net.WebClient
    10. Dim b As String = a.DownloadString("https://api.twitch.tv/kraken/channels/" & username)
    11. Return b <> "[]"
    12. End Function


    Ich hoffe sehr, ihr kommt mir dabei helfen. Dankee!
    @Kenox Leider verstehe ich nicht genau, was Du willst.
    Beschreib noch mal genau, was passieren soll bzw. was nicht passieren soll.
    Was soll wo ausgeschnitten werden?
    Was hat das mit JSon zu tun?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich möchte jetzt bei dem Link: (api.twitch.tv/kraken/channels/Shlorox)
    bei "mature" NUR "false" oder "true" rauskopieren, und damit ein Zeichen geben,
    ob der Stream an oder aus ist. Nur ich habe überhaupt keine Ahnung wie das gehen soll.
    Danke :) @RodFromGermany
    Bau dir eine Klasse mit der Du den Json bekommst. Denke sowas würde reichen:

    VB.NET-Quellcode

    1. Public Class directst
    2. Public Function GetResponse(ByVal url As String) As String
    3. request = CType(HttpWebRequest.Create(url), HttpWebRequest)
    4. request.CookieContainer = cookiecon
    5. response = CType(request.GetResponse(), HttpWebResponse)
    6. Return New StreamReader(response.GetResponseStream()).ReadToEnd()
    7. End Function
    8. End Class


    Dann kannst Du sowas hier nehmen:

    VB.NET-Quellcode

    1. With New directst
    2. Dim html As String = String.Empty
    3. html = .GetResponse("DEIN LINK")
    4. Dim obj as wasauchimmer
    5. obj = JsonConvert.DeserializeObject(html)
    6. 'Hiermit solltest Du dann arbeiten können
    7. For Each dingen In obj
    8. Dim isseron As String = dingen("mature").value.ToString
    9. Next
    10. End With


    Hmm. Nicht sehr schön, aber fürn Anfang reichts dann vllt :)
    Ich bekomme jedoch Fehler, angeblich kann "request","response" und die anderen
    Sachen nicht gefunden werden. Alles ist schon importiert :?

    Kenox schrieb:

    rauskopieren
    Da gibt es 2 grundsätzliche Herangehensweisen:
    • Du behandelst den String als JSon:

    • Du machst ein wenig String-Arithmetik:

      VB.NET-Quellcode

      1. Dim b = System.IO.File.ReadAllText("C:\Temp\xxx.json")
      2. 'Dim b As String = a.DownloadString("https://api.twitch.tv/kraken/channels/" & username)
      3. Dim parts() = b.Split(New Char() {"{"c, """"c, ":"c, ","c}, StringSplitOptions.RemoveEmptyEntries)
      4. MessageBox.Show(parts(1))

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Schmandal schrieb:

    besseren Ansatz
    allerdings nur, weil das 2. Item ausgelesen werden soll.
    Bei größeren Manipulationen würde ich in jedem Falle auf JSon selbst zurückgreifen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    @Schmandal
    Och menno, funktioniert nicht richtig. Entweder ich habe einen Kurzschluss oder das
    System ist viel zu komisch. Undzwar, habe ich ja gesagt ich möchte angeben ob der Streamer
    online oder offline ist. Klappt eig. alles auch bis das Label setzen. Egal ob false oder true
    es bleibt die ganze Zeit auf "Online". Code kann etwas komisch sein, aber ab da bin ich
    zu Ende gekommen.

    Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Try
    2. Dim a As New System.Net.WebClient
    3. 'Dim b As String = a.DownloadString("https://api.twitch.tv/kraken/channels/" & username)
    4. Dim b As String = a.DownloadString("https://api.twitch.tv/kraken/channels/Shlorox")
    5. Dim parts() = b.Split(New Char() {"{"c, """"c, ":"c, ","c}, StringSplitOptions.RemoveEmptyEntries)
    6. Return b <> "[]"
    7. FlatLabel21.Text = "Error"
    8. FlatLabel21.Text = parts(1)
    9. If (FlatLabel21.Text = "true") Then
    10. FlatLabel20.Visible = False
    11. FlatLabel21.Visible = True
    12. ElseIf (FlatLabel21.Text = "false") Then
    13. FlatLabel20.Visible = True
    14. FlatLabel21.Visible = False
    15. End If
    16. Catch ex As Exception
    17. FlatLabel20.Visible = True
    18. FlatLabel21.Visible = False
    19. MsgBox("error")
    20. End Try


    Was mache ich da falsch?
    Vergessen zu schreiben: Ich habe das so gemacht, weil das Problem auch mit if(isOnline...) besteht.

    Kenox schrieb:

    FlatLabel21.Text = parts(1)
    If (FlatLabel21.Text = "true") Then


    Hmm. Die Stelle ist nicht sehr sinnvoll. Aber sei's drum. Dort fehlt wenn Rods Screenshot korrekt ist, wovon ich zu 100% ausgehe ein Kommata.

    true, oder false, sollten richtig sein. (Kommata fehlt!)

    Dennoch ist das ganze noch ein wenig verbesserungsbedürftig.

    Kenox schrieb:

    VB.NET-Quellcode

    1. Return b <> "[]"
    Sttreiche zunächst diese Zeile ersatzlos.
    Dann setz einen Haltepunkt rein, arbeite Dein Programm zeilenweise ab und verstehe, was es macht. Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!