Konvertieren ein Dictionary in eine JSON-Zeichenfolge in C#
- Die grundlegende Struktur eines JSON-Strings
-
Verwenden Sie
JsonConvert.SerializeObject()
, um ein Dictionary inC#
in JSON zu konvertieren -
Verwenden Sie eine benutzerdefinierte Funktion, um ein Dictionary in
C#
in JSON zu konvertieren -
Verwenden Sie JavaScript Serializer in C# für
.NET
Webapps
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!
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