C# Programming

Effizientes JSON-Parsing in C#

Spread the love

JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenformat für den Datenaustausch, das häufig in Webanwendungen verwendet wird. C# bietet verschiedene Möglichkeiten, JSON-Daten effizient zu parsen, wodurch die Integration mit Web-APIs und anderen JSON-basierten Systemen vereinfacht wird. Dieser Artikel untersucht drei gängige Methoden und hebt deren Stärken und Schwächen hervor.

Inhaltsverzeichnis

JSON-Parsing mit JsonConvert.DeserializeObject()

Die Newtonsoft.Json-Bibliothek ist eine weit verbreitete und sehr performante JSON-Bibliothek für .NET. Sie bietet die Methode JsonConvert.DeserializeObject() zum effizienten Parsen von JSON. Sie müssen sie über den NuGet Package Manager („Newtonsoft.Json“) installieren.


using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""John Doe"",
            ""Age"": 30,
            ""City"": ""New York""
        }";

        Person person = JsonConvert.DeserializeObject<Person>(jsonString);

        Console.WriteLine($"Name: {person.Name}");
        Console.WriteLine($"Age: {person.Age}");
        Console.WriteLine($"City: {person.City}");
    }
}

Dieser Code definiert eine Person-Klasse, die der JSON-Struktur entspricht. JsonConvert.DeserializeObject<Person>(jsonString) deserialisiert den JSON-String in ein Person-Objekt, wodurch ein einfacher Zugriff auf dessen Eigenschaften ermöglicht wird. Dies ist im Allgemeinen der effizienteste und funktionsreichste Ansatz.

Dynamisches JSON-Parsing mit JObject.Parse()

Auch unter Verwendung von Newtonsoft.Json bietet die Methode JObject.Parse() dynamisches Parsen. Dies ist von Vorteil, wenn die JSON-Struktur unbekannt ist oder ein flexibler Zugriff auf Eigenschaften erforderlich ist.


using Newtonsoft.Json.Linq;

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""Jane Doe"",
            ""Age"": 25,
            ""City"": ""London"",
            ""Address"": {
                ""Street"": ""123 Main St"",
                ""Zip"": ""10001""
            }
        }";

        JObject jObject = JObject.Parse(jsonString);

        string name = (string)jObject["Name"];
        int age = (int)jObject["Age"];
        string city = (string)jObject["City"];
        string street = (string)jObject["Address"]["Street"];

        Console.WriteLine($"Name: {name}");
        Console.WriteLine($"Age: {age}");
        Console.WriteLine($"City: {city}");
        Console.WriteLine($"Street: {street}");
    }
}

JObject.Parse() erstellt ein JObject. Auf Eigenschaften wird über Indexer zugegriffen, wodurch der Zugriff auf geschachtelte Objekte ermöglicht wird. Typumwandlung ist entscheidend, um Werte korrekt abzurufen.

Verwenden von JavaScriptSerializer().Deserialize()

Der integrierte JavaScriptSerializer (System.Web.Script.Serialization) bietet eine einfachere Alternative. Er ist jedoch im Allgemeinen weniger effizient als Newtonsoft.Json und verfügt über weniger Funktionen. Er wird der Vollständigkeit halber erwähnt, sollte aber in Produktionsanwendungen vermieden werden.


using System.Web.Script.Serialization;

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""Peter Jones"",
            ""Age"": 40,
            ""City"": ""Paris""
        }";

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Person person = serializer.Deserialize<Person>(jsonString);

        Console.WriteLine($"Name: {person.Name}");
        Console.WriteLine($"Age: {person.Age}");
        Console.WriteLine($"City: {person.City}");
    }
}

Dies verwendet JavaScriptSerializer.Deserialize<Person>(). Beachten Sie, dass Sie je nach Projekt möglicherweise einen Verweis auf System.Web.Extensions hinzufügen müssen.

Zusammenfassend lässt sich sagen, dass JsonConvert.DeserializeObject() von Newtonsoft.Json aufgrund seiner Leistung und Funktionen empfohlen wird. JObject.Parse() bietet Flexibilität, während JavaScriptSerializer() eine einfache Alternative darstellt. Wählen Sie die Methode, die am besten zu Ihren Bedürfnissen passt. Behandeln Sie in Produktionscode immer potenzielle Ausnahmen (wie JsonReaderException).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert