Convertir un dictionnaire en chaîne JSON en C#
- La structure de base d’une chaîne JSON
-
Utilisez
JsonConvert.SerializeObject()
pour convertir un dictionnaire en JSON enC#
-
Utiliser une fonction personnalisée pour convertir un dictionnaire en JSON en
C#
-
Utiliser JavaScript Serializer en C# pour les Webapps
.NET
Alors, comment créer un dictionnaire en C#
? En C#, nous importons d’abord un package comme suit.
using System.Collections.Generic;
Et puis, à l’intérieur de la fonction déclarée MAIN
dans la classe, nous déclarons l’objet Dictionary
.
IDictionary<int, double> cgpas = new IDictionary<int, dictionary>();
Allons-y maintenant et voyons comment convertir un Dictionary
en JSON
.
La structure de base d’une chaîne JSON
Qu’est-ce que JSON ? JSON signifie JavaScript Object Notation
.
Il utilise une sorte de structure où les valeurs sont mappées à une clé. Donc, si nous voulons stocker un ensemble d’employés dans un magasin, disons, nous pouvons procéder comme suit.
{"employees" : {{"id" : 1 , "name" : "John"}, {"id" : 2, "name" : "Kevin"}}
Maintenant, l’exemple ci-dessus peut être un peu complexe. Mais décomposons-le.
Nous définissons d’abord JSON parce que vous pouvez avoir un aperçu de sa structure et mieux comprendre comment les conversions indiquées plus tard se produisent.
Alors on démarre avec "employees"
, qui est la KEY
. Et puis, on voit une accolade suivie de 2
autres accolades (fermées et ouvertes).
Une enceinte d’accolades peut également être appelée un ensemble. Il contient des clés et des valeurs car nous n’avons défini que 2
employés différents, JOHN
et KEVIN
; par conséquent, seuls deux ensembles sont définis.
Ceux-ci sont enfermés dans un ensemble plus grand, la valeur des KEY EMPLOYEES
. Ainsi, si nous avons maintenant tendance à appeler la balise employees
, nous recevrons cet ensemble comme valeur.
Utilisez JsonConvert.SerializeObject()
pour convertir un dictionnaire en JSON en C#
Commençons par ajouter quelques valeurs au dictionnaire CGPA
que nous venons d’initialiser il y a quelques temps.
cgpas.Add(1, 3.4);
cgpas.Add(2, 3.13);
cgpas.Add(3, 3.01);
Et si nous voulons obtenir la valeur de, disons, ID 2
, nous pouvons appeler une instruction PRINT
comme suit.
Console.WriteLine("The CGPA of ID 2 is: " + cgpas[2]);
Ici, le ID
est entre crochets, indiquant la KEY
. Convertissons maintenant en utilisant l’appel JsonConvert
.
string js = JsonConvert.SerializeObject(cgpas);
Avant d’exécuter ce code, assurez-vous d’avoir téléchargé NewtonSoft.JSON
. Si ce n’est pas le cas, rendez-vous sur leur site Web ou, si vous travaillez dans Visual Studio
, accédez à Nuget Packages
et installez NewtonSoft.JSON
pour éviter toute erreur.
Maintenant, imprimons la chaîne convertie facilement ici.
Console.WriteLine("The CGPAs are: " + js);
Et la sortie est la suivante.
The CGPAs are: {"1":3.4,"2":3.13,"3":3.01}
Si vous ne trouvez pas la définition SerializeObject
, vérifiez si vous l’appelez depuis la classe JsonConvert
et non le JsonConverter
de System.Text.Json
. Vérifiez également l’installation de NewtonSoft.JSON
.
Utiliser une fonction personnalisée pour convertir un dictionnaire en JSON en C#
Regardons une autre solution où nous implémentons une fonction qui prend un dictionnaire et le convertit en une chaîne JSON. Il pourra être modifié ultérieurement selon vos besoins, mais allons-y et utilisons-le pour notre IDICTIONARY CGPAS
.
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) + "}";
}
Maintenant, que se passe-t-il ici ? Eh bien, nous passons le dictionnaire en paramètre.
Vous pouvez remarquer que nous avons utilisé IDICTIONNAIRE
et non DICTIONNAIRE
. IDICTIONARY
hérite de DICTIONARY
et a quelques extensions plus pratiques, nous avons donc continué.
Cependant, les fonctions de base restent les mêmes. À l’intérieur de la fonction, nous formatons la chaîne en mappant la KEY
du DICTIONARY
et en utilisant des crochets pour exprimer comment les valeurs doivent être à l’intérieur de la chaîne.
Les crochets autour de {1}
mapperont les valeurs simplement sous forme de nombres ou de chaînes. Cependant, si vous avez tendance à le rendre plus expressif et complexe, vous pouvez ajouter des crochets comme ceci : {[1]}
et le faire fonctionner.
Cela imprimera les valeurs entre crochets. Le reste renvoie la chaîne dans le formatage approprié.
Maintenant à l’intérieur de la fonction MAIN
, faites les mêmes appels.
string js = MyDictionaryToJson(cgpas);
Console.WriteLine("The CGPAs are: " + js);
Production:
The CGPAs are: {"1": 3.4,"2": 3.13,"3": 3.01}
Utiliser JavaScript Serializer en C# pour les Webapps .NET
Supposons que vous utilisiez des applications Web qui utilisent C# comme noyau. Dans ce cas, il vaut mieux suivre une structure LIST
pour définir les objets, puis utiliser la fonction JavaScriptSerializer()
pour le convertir en chaîne.
Utilisez les espaces de noms définis ci-dessous pour éviter toute erreur de syntaxe lors de la compilation.
using System.Collections.Generic;
using System.Text.Json;
Ensuite, allons-y et créons la liste CGPA
.
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 });
Bien sûr, il faut aussi définir la classe CGPA
à instancier.
public class CGPA {
public int ID { get; set; }
public double CGP { get; set; }
}
Et puis, nous pouvons le convertir en une chaîne comme suit.
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(cgpas);
Vous pouvez imprimer le serializedResult
, qui sera la chaîne formatée à partir de la LIST
initialisée.
Vous devrez peut-être jouer un peu avec votre code dans les versions Web. Parfois, les versions console ne fonctionneront pas et seront entièrement compatibles.
Par conséquent, assurez-vous que les fonctions, les assemblages et les directives que vous utilisez correspondent à la version que vous exécutez.
Vous pouvez modifier les codes donnés ci-dessus selon votre convenance. Merci pour la lecture!
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