JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenformat für den Austausch, das in Webanwendungen und APIs weit verbreitet ist. C# bietet verschiedene Möglichkeiten, Objekte effizient in JSON-Strings zu konvertieren, wodurch die Kommunikation mit anderen Systemen vereinfacht und eine menschenlesbare Datenspeicherung ermöglicht wird. Dieser Artikel untersucht drei gängige Methoden für diese Konvertierung und vergleicht deren Stärken und Schwächen.
Inhaltsverzeichnis
- Konvertieren von Objekten in JSON mit
JavaScriptSerializer
- Effiziente JSON-Serialisierung mit
JsonConvert.SerializeObject
- Feingranulare Steuerung mit
JObject.FromObject
Konvertieren von Objekten in JSON mit JavaScriptSerializer
Die Klasse System.Web.Script.Serialization.JavaScriptSerializer
bietet einen unkomplizierten Ansatz zur JSON-Serialisierung. Es handelt sich jedoch um eine Legacy-Komponente, der die Funktionen und die Leistung modernerer Bibliotheken fehlen. Für neue Projekte wird im Allgemeinen die Verwendung neuerer Alternativen empfohlen.
using System;
using System.Web.Script.Serialization;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(person);
Console.WriteLine(jsonString); // Ausgabe: {"Name":"John Doe","Age":30}
}
}
Hinweis: Erfordert einen Verweis auf System.Web.Extensions
(in der Regel unter .NET Framework-Assemblies zu finden). Nicht empfohlen für .NET Core und spätere Versionen.
Effiziente JSON-Serialisierung mit JsonConvert.SerializeObject
Newtonsoft.Json (oft als Json.NET bezeichnet) ist eine weit verbreitete, leistungsstarke JSON-Bibliothek für C#. Sie bietet eine robuste und funktionsreiche Lösung für die JSON-Serialisierung und -Deserialisierung. Installieren Sie das NuGet-Paket Newtonsoft.Json
, um diese Methode zu verwenden.
using Newtonsoft.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString); // Ausgabe: {"Name":"John Doe","Age":30}
}
}
JsonConvert.SerializeObject
ist prägnant und effizient. Newtonsoft.Json bietet umfangreiche Anpassungsmöglichkeiten für die Behandlung von Nullwerten, Formatierung und mehr.
Feingranulare Steuerung mit JObject.FromObject
Auch Teil der Newtonsoft.Json-Bibliothek bietet die Klasse JObject
eine feingranulare Steuerung der JSON-Struktur vor der Serialisierung. Dies ist besonders nützlich, wenn die JSON-Darstellung vor der Konvertierung in einen String manipuliert werden soll.
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JObject jsonObject = JObject.FromObject(person);
string jsonString = jsonObject.ToString();
Console.WriteLine(jsonString); // Ausgabe: {"Name":"John Doe","Age":30}
}
}
Ähnlich wie JsonConvert.SerializeObject
für einfache Objekte bietet JObject.FromObject
eine größere Flexibilität für komplexe Szenarien. Sie können Eigenschaften innerhalb des JObject
einfach hinzufügen, entfernen oder ändern, bevor die endgültige Serialisierung erfolgt.
Fazit: Für die moderne C#-Entwicklung werden die Methoden JsonConvert.SerializeObject
und JObject.FromObject
von Newtonsoft.Json aufgrund ihrer Leistung, Funktionen und Flexibilität dringend empfohlen. Denken Sie daran, das NuGet-Paket Newtonsoft.Json
zu installieren.