JSON-Verarbeitung in C# (.NET): Vollständiger Leitfaden zu Newtonsoft.Json und System.Text.Json

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

JSON-Verarbeitung in C# (.NET): Vollständiger Leitfaden

JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das zum Standard für Web-APIs und Konfigurationsdateien geworden ist. Im C# (.NET)-Ökosystem gibt es zwei Hauptwerkzeuge für die Arbeit mit JSON: die bewährte Bibliothek Newtonsoft.Json (auch bekannt als Json.NET) und die moderne integrierte Bibliothek System.Text.Json, die mit .NET Core 3.0 eingeführt wurde. In diesem Artikel werden wir beide Bibliotheken, ihre Funktionen und Anwendungsbeispiele im Detail besprechen.



1. Newtonsoft.Json (Json.NET)

Newtonsoft.Json ist seit vielen Jahren der De-facto-Standard für die Arbeit mit JSON in C#. Sie bietet einen umfangreichen Funktionsumfang, darunter flexible Serialisierung, Unterstützung für LINQ to JSON und die Arbeit mit dynamischen Typen.



Installation

Für die Installation über den NuGet Package Manager führen Sie den folgenden Befehl aus:

Install-Package Newtonsoft.Json

Oder über die .NET CLI:

dotnet add package Newtonsoft.Json


Grundlegende Operationen: Serialisierung und Deserialisierung

Serialisierung ist die Umwandlung eines C#-Objekts in einen JSON-String. Deserialisierung ist der umgekehrte Vorgang.

using Newtonsoft.Json;

public class Person{ public string Name { get; set; } public int Age { get; set; } public List<string> Hobbies { get; set; }}

// SerialisierungPerson person = new Person{ Name = "Alexej", Age = 30, Hobbies = new List<string> { "Programmieren", "Lesen", "Reisen" }};

string json = JsonConvert.SerializeObject(person, Formatting.Indented);Console.WriteLine(json);

// Deserialisierungstring jsonInput = @"{'Name':'Maria','Age':25,'Hobbies':['Zeichnen','Yoga']}";Person deserializedPerson = JsonConvert.DeserializeObject<Person>(jsonInput);Console.WriteLine($"Name: {deserializedPerson.Name}, Alter: {deserializedPerson.Age}");


Arbeiten mit dynamischen Daten

Newtonsoft.Json unterstützt dynamische Typen, was bei der Arbeit mit unbekannten JSON-Strukturen praktisch ist.

dynamic dynamicObject = JsonConvert.DeserializeObject("{'Name':'Ivan','Score':95.5}");Console.WriteLine($"Student: {dynamicObject.Name}, Punktzahl: {dynamicObject.Score}");


LINQ to JSON

Die Bibliothek bietet eine leistungsstarke API für Abfragen von JSON-Daten mit LINQ.

using Newtonsoft.Json.Linq;

string json = @"{ 'users': [ {'name': 'Anna', 'age': 28}, {'name': 'Peter', 'age': 35}, {'name': 'Helena', 'age': 22} ]}";

JObject obj = JObject.Parse(json);var youngUsers = obj["users"] .Where(u => (int)u["age"] < 30) .Select(u => (string)u["name"]);

foreach (var name in youngUsers){ Console.WriteLine(name); // Gibt aus: Anna, Helena}


2. System.Text.Json

System.Text.Json ist eine moderne Bibliothek von Microsoft, optimiert für Leistung und minimalen Speicherverbrauch. Sie ist in .NET integriert und erfordert keine Installation zusätzlicher Pakete.



Grundlegende Operationen

using System.Text.Json;using System.Text.Json.Serialization;

public class Product{ [JsonPropertyName("product_name")] public string Name { get; set; } public decimal Price { get; set; } [JsonIgnore] public string InternalCode { get; set; }}

// SerialisierungProduct product = new Product{ Name = "Laptop", Price = 75000.50m, InternalCode = "INT-001"};

string json = JsonSerializer.Serialize(product, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);

// Deserialisierungstring jsonInput = @"{""product_name"":""Smartphone"",""Price"":45000.00}";Product deserializedProduct = JsonSerializer.Deserialize<Product>(jsonInput);Console.WriteLine($"Produkt: {deserializedProduct.Name}, Preis: {deserializedProduct.Price}");

Empfehlungen