Konvertieren ein Dictionary in eine JSON-Zeichenfolge in C#

Bilal Shahid 12 Oktober 2023
  1. Die grundlegende Struktur eines JSON-Strings
  2. Verwenden Sie JsonConvert.SerializeObject(), um ein Dictionary in C# in JSON zu konvertieren
  3. Verwenden Sie eine benutzerdefinierte Funktion, um ein Dictionary in C# in JSON zu konvertieren
  4. Verwenden Sie JavaScript Serializer in C# für .NET Webapps
Konvertieren ein Dictionary in eine JSON-Zeichenfolge in C#

Wie erstellen wir also ein Dictionary in C#? In C# importieren wir zunächst ein Paket wie folgt.

using System.Collections.Generic;

Und dann deklarieren wir innerhalb der deklarierten Funktion MAIN innerhalb der Klasse das Objekt Dictionary.

IDictionary<int, double> cgpas = new IDictionary<int, dictionary>();

Lassen Sie uns jetzt fortfahren und sehen, wie wir ein Dictionary in JSON konvertieren können.

Die grundlegende Struktur eines JSON-Strings

Was ist JSON? JSON steht für JavaScript Object Notation.

Es verwendet eine Art Struktur, in der Werte einem Schlüssel zugeordnet werden. Wenn wir also beispielsweise eine Reihe von Mitarbeitern in einem Geschäft lagern möchten, können wir wie folgt vorgehen.

{"employees" : {{"id" : 1 , "name" : "John"}, {"id" : 2, "name" : "Kevin"}}

Nun ist das obige Beispiel vielleicht etwas komplex. Aber lass es uns aufschlüsseln.

Wir definieren JSON zuerst, weil Sie einen Einblick in seine Struktur erhalten und besser aufschlüsseln können, wie die später angegebenen Konvertierungen erfolgen.

Wir beginnen also mit Employees, dem KEY. Und dann sehen wir eine geschweifte Klammer, gefolgt von 2 weiteren geschweiften Klammern (schließen und öffnen).

Eine Einschließung in geschweiften Klammern kann auch als Menge bezeichnet werden. Es enthält Schlüssel und Werte, weil wir nur 2 verschiedene Mitarbeiter definiert haben, JOHN und KEVIN; daher sind nur zwei Sätze definiert.

Diese sind in einem grösseren Set eingeschlossen, dem Wert der SCHLÜSSELMITARBEITER. Wenn wir also nun eher den Tag MITARBEITER aufrufen, erhalten wir diese Menge als Wert.

Verwenden Sie JsonConvert.SerializeObject(), um ein Dictionary in C# in JSON zu konvertieren

Beginnen wir mit dem Hinzufügen einiger Werte zum CGPA-Dictionary, das wir gerade vor einiger Zeit initialisiert haben.

cgpas.Add(1, 3.4);
cgpas.Add(2, 3.13);
cgpas.Add(3, 3.01);

Und wenn wir den Wert von, sagen wir, ID 2 erhalten wollen, können wir eine PRINT-Anweisung wie folgt aufrufen.

Console.WriteLine("The CGPA of ID 2 is: " + cgpas[2]);

Hier ist die ID in eckige Klammern eingeschlossen, was den KEY bezeichnet. Konvertieren wir nun mit dem Aufruf JsonConvert.

string js = JsonConvert.SerializeObject(cgpas);

Bevor Sie diesen Code ausführen, vergewissern Sie sich, dass Sie NewtonSoft.JSON heruntergeladen haben. Wenn Sie dies nicht tun, gehen Sie zu deren Website, oder wenn Sie in Visual Studio arbeiten, gehen Sie zu Nuget Packages und installieren Sie NewtonSoft.JSON, um Fehler zu vermeiden.

Lassen Sie uns nun die konvertierte Zeichenfolge einfach hier drucken.

Console.WriteLine("The CGPAs are: " + js);

Und die Ausgabe ist wie folgt.

The CGPAs are: {"1":3.4,"2":3.13,"3":3.01}

Wenn Sie die SerializeObject-Definition nicht finden können, prüfen Sie, ob Sie sie aus der JsonConvert-Klasse aufrufen und nicht den JsonConverter aus System.Text.Json. Überprüfen Sie auch die Installation von NewtonSoft.JSON.

Verwenden Sie eine benutzerdefinierte Funktion, um ein Dictionary in C# in JSON zu konvertieren

Schauen wir uns eine andere Lösung an, bei der wir eine Funktion implementieren, die ein Dictionary nimmt und es in eine JSON-Zeichenfolge konvertiert. Es kann später an Ihre Bedürfnisse angepasst werden, aber lassen Sie uns fortfahren und es für unsere IDICTIONARY CGPAS verwenden.

static string MyDictionaryToJson(IDictionary<int, double> dict) {
  var x = dict.Select(d => string.Format("\"{0}\": {1}", d.Key, string.Join(",", d.Value)));
  return "{" + string.Join(",", x) + "}";
}

Nun, was ist hier los? Nun, wir übergeben das Dictionary als Parameter.

Sie können feststellen, dass wir IDICTIONARY und nicht DICTIONARY verwendet haben. IDICTIONARY erbt von DICTIONARY und hat ein paar praktischere Erweiterungen, also haben wir damit weitergemacht.

Die Grundfunktionen bleiben jedoch gleich. Innerhalb der Funktion formatieren wir die Zeichenfolge, indem wir den KEY aus dem DICTIONARY zuordnen und Klammern verwenden, um auszudrücken, wie Werte in der Zeichenfolge enthalten sein sollen.

Die Klammern um {1} bilden Werte einfach als Zahlen oder Zeichenfolgen ab. Wenn Sie es jedoch ausdrucksstärker und komplexer gestalten möchten, können Sie eckige Klammern wie diese hinzufügen: {[1]} und es funktioniert.

Dadurch werden die Werte in eckigen Klammern gedruckt. Der Rest gibt die Zeichenfolge in der richtigen Formatierung zurück.

Führen Sie nun in der Funktion MAIN die gleichen Anrufe durch.

string js = MyDictionaryToJson(cgpas);

Console.WriteLine("The CGPAs are: " + js);

Ausgabe:

The CGPAs are: {"1": 3.4,"2": 3.13,"3": 3.01}

Verwenden Sie JavaScript Serializer in C# für .NET Webapps

Angenommen, Sie verwenden Webanwendungen, die C# als Kern verwenden. In diesem Fall ist es besser, einer LIST-Struktur zu folgen, um die Objekte zu definieren, und sie dann mit der JavaScriptSerializer()-Funktion in einen String umzuwandeln.

Verwenden Sie die unten definierten Namespaces, um Syntaxfehler beim Kompilieren zu vermeiden.

using System.Collections.Generic;
using System.Text.Json;

Dann machen wir weiter und erstellen die CGPA-Liste.

var cgpas = new List<int, double>();
cgpas.Add(new CGPA() { ID = 1, CGP = 3.4 });
cgpas.Add(new CGPA() { ID = 2, CGP = 3.13 });
cgpas.Add(new CGPA() { ID = 3, CGP = 3.01 });

Natürlich müssen wir auch die Klasse CGPA zum Instanziieren definieren.

public class CGPA {
  public int ID { get; set; }
  public double CGP { get; set; }
}

Und dann können wir es wie folgt in einen String umwandeln.

var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(cgpas);

Sie können das serializedResult drucken, das die Zeichenfolge ist, die aus der initialisierten LIST formatiert wird.

In Webversionen müssen Sie möglicherweise ein wenig mit Ihrem Code herumspielen. Manchmal funktionieren Konsolenversionen nicht und sind vollständig kompatibel.

Stellen Sie daher sicher, dass die von Ihnen verwendeten Funktionen, Assemblys und Anweisungen mit der von Ihnen ausgeführten Version übereinstimmen.

Sie können die oben angegebenen Codes entsprechend Ihrer Eignung ändern. Vielen Dank fürs Lesen!

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Verwandter Artikel - Csharp Dictionary