Re: vb.net Deserialize echonest JSON response
Geizhals » Forum » Programmierung » vb.net Deserialize echonest JSON response (12 Beiträge, 398 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
vb.net Deserialize echonest JSON response
26.12.2014, 17:56:11
Hallo,

ich versuche schon seit einiger Zeit einen JSON Response aus dem echonet Projekt ( http://the.echonest.com/  ) in vb.net zu zerpflücken.

Beispiel Response:
https://forum.geizhals.at/files/203513/response.txt

Längere google Sessions habe ich schon hinter mir - jedoch ohne Erfolg!
Bitte keine C# Codes da ich die Erfahrung gemacht habe, das die Konverter nicht immer zum Ziel führen.

Ziel wäre es den Response via Foreach zu deserialisieren und am besten in ein für mich verdauliches Format z.B. Listview Item mit subitems oder einem Array oder ähnliches zu übersetzen.

z.B.:
        Dim lvResponse As ListView
        lvResponse = New ListView
        lvResponse.Columns.Add("Index")
        lvResponse.Columns.Add("Score")
        lvResponse.Columns.Add("Title")
        lvResponse.Columns.Add("Message")
        lvResponse.Columns.Add("ArtistID")
        lvResponse.Columns.Add("Artist")
        lvResponse.Columns.Add("ID")



der erste Schritt (deserialize) ist ja noch einfach:

Dim dict = jss.Deserialize(Of Dictionary(Of String, Object))(JSON)
Wobei "JSON" ein String ist der den Response enthält.

Zurück bekomme ich folgende Struktur -> Siehe Bild


Vielleicht kann mir jemand erklären/zeigen wie man sich in so einem JSON Response via ForEach oder ähnlichem bewegt und die Daten richtig abfragt?!

Für Ansätze wäre ich dankbar!

<-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><->

Sagte ich ja schon ... wasined :-)
Antworten PM Alle Chronologisch
 
Melden nicht möglich
.
Re: vb.net Deserialize echonest JSON response
27.12.2014, 08:33:20
Zuerst brauchst du Klassen welche die JSON Objekte repräsentieren. Die musst du nicht manuell erstellen, es gibt EDIT->Paste Special->Paste as Json classes. Wenn du keine web extensions in VS hast gibt es Alternativen:
http://json2csharp.com/
https://jsonclassgenerator.codeplex.com/
Die letzten beiden Methoden sind C# spezifisch, wie rund 90% aller .net Ressourcen, weswegen du lieber gleich C# statt VB.net lernen solltest. Die einfachen JSON Klassen sollte aber jeder Konverter schaffen. Schlimmstenfalls kannst du die Klassen zu einer .dll kompilieren und dir den garantiert richtigen VB.net Code mittels ILSPY holen.

In deinem Fall also:


Public Class Rootobject
	Public Property response() As Response
End Class

Public Class Response
	Public Property status() As Status
	Public Property songs() As Song()
End Class

Public Class Status
	Public Property version() As String
	Public Property code() As Integer
	Public Property message() As String
End Class

Public Class Song
	Public Property tag() As Integer
	Public Property [error]() As String
	Public Property score() As Integer
	Public Property title() As String
	Public Property message() As String
	Public Property artist_id() As String
	Public Property artist_name() As String
	Public Property id() As String
End Class


Jetzt hast du deine Klassen.

Nun brauchst du eine Referenz auf System.Web.Extensions und rufst dann folgendes auf.

(json ist hier ein String)

Imports System.Web.Script.Serialization
Dim rootObject As Rootobject = New JavaScriptSerializer().Deserialize(Of Rootobject)(json)


Das Objekt ist sehr logisch aufgebaut und du solltest es mittels Debugger sofort verstehen:
Beispiel zur Anwendung:

		If (rootObject.response.status.code = 0) Then
			For Each song As Song In rootObject.response.songs
				Console.WriteLine(song.title)
			Next
		End If


test
27.12.2014, 08:38 Uhr - Editiert von Diabolo2000, alte Version: hier
Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung