Deserialize json in c # -Klassen

8

Ich versuche eine UWP-App mit der RIOT-API für League of Legends zu erstellen.

Wenn ich auf ihre Website gehe, um den JSON zu generieren, bekomme ich etwas wie folgt:

%Vor%

Wenn ich diesen JSON auswähle und ihn mit der speziellen Einfügemethode in Visual Studio 2015 in eine neue Klasse kopiere, erhalte ich folgende Klassen mit diesen Eigenschaften:

%Vor%

Ich habe eine neue Klasse namens LOLFacade für die Verbindung mit der RiotAPI erstellt:

%Vor%

Dies ist die Schaltfläche Event-Handler-Methode:

%Vor%

Ich habe den Regionsnamen und den Benutzer zu Testzwecken fest codiert. Dies funktioniert mit meinem Benutzernamen: "gigaxel".
Wenn ich einen anderen Benutzernamen wie zum Beispiel "xenon94" versuche, bekomme ich eine Ausnahme:

%Vor%

Wenn ich den Eigenschaftsnamen in Rootobject von gigaxel zu xenon94 wie folgt ändere:

%Vor%

Wenn ich meinen Code neu kompiliere funktioniert es für den Benutzernamen xenon94 , aber es funktioniert nicht für meinen Benutzernamen "gigaxel" .
Ich möchte, dass es für jeden beliebigen Benutzernamen funktioniert.

    
Gigaxel 01.01.2016, 12:28
quelle

1 Antwort

7

Das Problem ist, dass das Json-Objekt eine Eigenschaft namens namens gigaxel hat. Sie müssen das Innenobjekt wie folgt abrufen:

%Vor%

Von dort können Sie den Namen und andere Dinge durch den Indexer erhalten:

%Vor%

Um dies näher auszuführen, gibt das JsonConvert.DeserializeObject (x) ein neues JObject zurück, das nur ein Objekt enthält. Daher der Erste Aufruf. Außerdem hat dieses Objekt nur eine Eigenschaft namens "Gigaxel". Der Wert dieser Eigenschaft ist die Information, die wir benötigen, z. Name. Wir möchten diese Informationen abrufen, unabhängig davon, wie die Eigenschaft benannt ist. Daher rufen wir First erneut auf, um den Wert dieser Eigenschaft abzurufen.

    
lenkan 01.01.2016, 12:51
quelle

Tags und Links