2016-11-27 6 views
-3

Ich arbeite gerade an einem Projekt, das eine JSON-Datei deserialisieren muss, aber es zeigt sich, dass es schwieriger zu tun und zu verstehen ist, als ich ursprünglich dachte.C# - JSON (.net) zu ListBox deserialisieren

Was ich tun möchte, ist deserialize this JSON file in eine ListBox auf meinem Windows Form-Projekt (located here). Ich möchte, dass jeder der Versionen in "Unity5Stable" in der List-Box (5.4.3, 5.4.2, etc.)

Teil json sich setzen:

{ 
    "Unity5Stable": { 
    "5.4.3": { 
     "x86": "http://netstorage.unity3d.com/unity/01f4c123905a/Windows32EditorInstaller/UnitySetup32-5.4.3f1.exe", 
     "x64": "http://netstorage.unity3d.com/unity/01f4c123905a/Windows64EditorInstaller/UnitySetup64-5.4.3f1.exe" 
    }, 
    "5.4.2": { 
     "x86": "http://download.unity3d.com/download_unity/b7e030c65c9b/Windows32EditorInstaller/UnitySetup32-5.4.2f2.exe", 
     "x64": "http://download.unity3d.com/download_unity/b7e030c65c9b/Windows64EditorInstaller/UnitySetup64-5.4.2f2.exe" 
    }, 
    "5.4.1": { 
     "x86": "http://download.unity3d.com/download_unity/649f48bbbf0f/Windows32EditorInstaller/UnitySetup32-5.4.1f1.exe", 
     "x64": "http://download.unity3d.com/download_unity/649f48bbbf0f/Windows64EditorInstaller/UnitySetup64-5.4.1f1.exe" 
    } 
    } 
} 

Ich habe ein paar verschiedene Vorschläge versucht von ein paar Seiten, aber es fällt mir schwer, etwas zu finden, das mit dem Einfügen der Objekte in eine ListBox zusammenhängt.

Jede Hilfe würde sehr geschätzt werden!

+0

Sie könnten beginnen, indem Sie Ihrem Formular eine 'ListBox' hinzufügen ... und wie Ihr Titel in GitHub nicly sagt" Weil ich es hasse Dinge selbst zu tun ".. versuchen Sie härter oder suchen Sie jemand anderen – NtFreX

+1

Nicht ganz sicher, warum Sie sind Da ich feindselig bin, habe ich eine Listbox bereit, und ein paar kaputte Codes von mir versuchen es selbst in einem lokalen Repo. Ich dränge nicht unfertigen Code zum Online-Repo. Wie ich bereits sagte, habe ich versucht, zu suchen, und arbeite seit etwa sechs Stunden lokal daran. Ich entschuldige mich, wenn ich die Frage falsch formuliert habe, und habe diesen Eindruck gemacht. –

+0

@DuckBread Willkommen bei SO. Ich schlage vor, [Hilfe-Center> Fragen] (http://stackoverflow.com/help/asking) durchzugehen, um zu verstehen, was eine gute Frage ist und was nicht. Verknüpfen Sie auch nicht mit externen Ressourcen, sondern schreiben Sie die erforderlichen Details mit der Frage selbst. Wenn die externen Ressourcen aus irgendeinem Grund offline sind, kann die Frage selbst für andere Leser nicht verwendet werden. – Jim

Antwort

0

Ich bin nicht mit Listboxen vertraut, aber ich weiß, dass Sie ein JSON in ein Objekt deserialisieren können. Sie erstellen ein Objekt mit dem gleichen Typ und den gleichen Variablen, die Ihr json hat, deserialisieren es und Sie können dann auf Ihre Variablen zugreifen. Ich habe newtonsoft.JSON in einem Xamarin-Formular-Projekt verwendet.

0

JSON Deserialisierung

Sie können JSON zu einer bekannten Art mit der JsonSerializer von Newtonsoft.Json (Weitere Details here)

Oder mit der Json Klasse von System.Web.Helpers deserialisieren können Sie JSON zu einer dynamic deserialisieren. (Weitere Details here)

dynamic data = Json.Decode(json); 

ListBox

Ihre ListBox hat eine Eigenschaft Items, die eine Sammlung ist, wo Sie Objekte hinzufügen können. Sie können ein string oder ein anderes Objekt hinzufügen. Die Methode ToString des Objekts wird aufgerufen und ihr Wert wird angezeigt.

+0

Ich denke, dass ich jetzt auf dem richtigen Weg bin - ich habe festgestellt, dass dies aufgrund der JSON-Objektnamen, die ich verwendet habe, nicht korrekt durchgeführt werden kann. Sie können keine Dezimalstellen (Heck, gerade Zahlen) für Methodennamen verwenden. Gibt es einen Weg dahin? –

+0

@DuckBread Ja dein Recht das ist ein Problem. Im Allgemeinen können Sie Zahlen in Variablennamen verwenden, aber nicht am Anfang von ihnen. Aber es ist in der Regel eine schlechte Übung, um den Code unlesbar zu machen. – NtFreX

+0

Ich habe es eingerichtet, wo es Daten in die ListBox von der JSON akzeptiert, nur jetzt bekomme ich eine "Unerwartete Charakter" Ausnahme. Ich habe einen neuen Zweig für das Problem auf dem [GitHub Repo hier] (https://github.com/ryanguy426/UVM/tree/Broken-StackOverflow) erstellt, und das ist der Fehler, den ich jetzt bekomme: http: //pastebin.com/CLHJCLaB. Ich habe auch den Problemcode in [MainWindow.cs] (https://github.com/ryanguy426/UVM/blob/Broken-StackOverflow/UVM/MainWindow.cs) verschoben, damit es etwas leichter zu erreichen ist. –

Verwandte Themen