Tipp der Woche
31.03.2022, 11:43 Uhr
.NET/Visual Studio: Json laden, seltsame Exception vermeiden
Json aus dem Web zu laden geht so einfach – und bringt manchmal so seltsame Fehlermeldungen.
Sie wollen einen String im Json-Format laden und in einer Klasse in Ihrem C#-Programm zur Verfügung stellen. Das geht einfach über:
using System.Net.Http;
using System.Text.Json;
HttpClient client = new HttpClient();
string s = await client.GetStringAsync(url);
Group[] group = JsonSerializer.Deserialize<Group[]>(s);
Dank des Namensraums System.Text.Json bietet ja .NET einen Serialisierer und Deserialisierer für Json und Sie müssen nicht mehr das zusätzliche NuGet-Paket Json.NET von Newtonsoft dazuladen. Sollten Sie bei dieser Abfrage die folgende, wenig aussagekräftige Exception erhalten,
The JSON value could not be converted to Root. Path: $ | LineNumber: 0 | BytePositionInLine: 1.
dann überprüfen Sie, ob die Klassenhierarchie tatsächlich auf die Hierarchie des Json-Strings passt.
Übrigens: Die Klassenhierarchie lässt sich in Visual Studio sehr einfach erzeugen: Kopieren Sie das komplette Json, das Sie einlesen wollen. Wählen Sie in Visual Studio dann den Menüpunkt "Bearbeiten | Inhalte einfügen | Json als Klassen einfügen" und schon haben Sie eine fertige Klassenhierarchie.