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.JsonOder über die .NET CLI:
dotnet add package Newtonsoft.JsonGrundlegende 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}"); Auch in der Bibliothek
Kotlin Aufgabenplaner: kotlinx-coroutines-core und die korGE-Bibliothek
Arbeiten mit Excel in PHP: Bibliotheken PhpSpreadsheet und OpenSpout
GraphQL für Kotlin: Leistungsstarke Bibliotheken zur API-Erstellung