Convertir une chaîne JSON en objet C#
-
Convertir une chaîne JSON en objet C# à l’aide de
Newtonsoft.Json
- Convertir une chaîne JSON en objet C# à l’aide de JavaScriptSerializer
-
Convertir une chaîne JSON en un exemple de code d’objet
C#
Ce didacticiel vous montrera comment convertir une chaîne JSON en objet C# à l’aide de deux méthodes différentes.
Le premier utilise la librairie Newtonsoft.Json
, tandis que le second utilise le JavaScriptSerializer
. Les deux méthodes sont similaires mais utilisent une syntaxe légèrement différente et nécessitent des références différentes.
Convertir une chaîne JSON en objet C# à l’aide de Newtonsoft.Json
La bibliothèque Newtonsoft.Json
est un framework JSON couramment utilisé pour .NET
. Cette bibliothèque peut être utilisée après l’installation du package dans votre solution. Vous pouvez utiliser la CLI .NET avec la commande ci-dessous pour installer le package.
> dotnet add package Newtonsoft.Json --version 13.0.1
Une chaîne JSON peut être convertie en n’importe quel type d’objet C# tant qu’il s’agit d’une chaîne JSON valide pour le type d’objet. Cela se fait en désérialisant la chaîne, en la convertissant au type spécifié (T) et en fournissant la chaîne JSON d’entrée.
JsonConvert.DeserializeObject<T>(json_string);
Convertir une chaîne JSON en objet C# à l’aide de JavaScriptSerializer
Une ancienne option pour convertir les chaînes JSON en objets C# est JavaScriptSerializer
. Bien qu’elle ne soit pas aussi rapide que la solution Newtonsoft.Json
, elle peut toujours être bien utilisée. Pour utiliser cette méthode, vous devez ajouter une référence à System.Web.Extensions.dll
à votre projet.
Pour ajouter la référence, suivez les étapes ci-dessous.
-
Accédez à l’explorateur de solutions
-
Clic droit sur Références
-
Cliquez sur
Add Reference
-
Cliquez sur l’onglet
Assemblies
à gauche -
Trouvez le fichier
System.Web.Extensions.dll
et cliquez surOK
.
Le JavaScriptSerializer
fonctionne de manière similaire à la méthode Newtonsoft.Json
en ce sens qu’il ne nécessite que la chaîne JSON et le type à désérialiser.
JavaScriptSerializer().Deserialize<T>(json_string)
Convertir une chaîne JSON en un exemple de code d’objet C#
L’exemple de code ci-dessous montre comment convertir une chaîne JSON en un objet C# de n’importe quel type en utilisant à la fois les fonctions JsonConvert.DeserializeObject<T>
et JavaScriptSerializer
. Pour cet exemple, nous convertissons des chaînes en un objet liste contenant des entiers (List<Int32>
) et en une classe personnalisée que nous avons également spécifiée dans le programme.
using Newtonsoft.Json;
using System.Data;
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace JSON_To_Object_Example {
class Program {
static void Main(string[] args) {
// Declare the JSON Strings
string list_str = "[1, 2, 3, 9, 8, 7]";
string custom_class_str =
"{ \"Name\":\"John Doe\",\"Age\":21,\"Birthday\":\"2000-01-01T00:00:00\"}";
// ----- Newtonsoft Method -----
// Deserialize the string by specifying the object type
List<Int32> list_converted_ns = JsonConvert.DeserializeObject<List<Int32>>(list_str);
// Print the contents of the newly converted List object to the Console.
Console.WriteLine("Converted List - Newtonsoft: " + String.Join(", ", list_converted_ns) +
"\n");
// The same can be done for any type of C# object, including custom classes. Just change the
// specified Type.
Custom_Class class_converted_ns =
JsonConvert.DeserializeObject<Custom_Class>(custom_class_str);
Console.WriteLine("Converted Class - Newtonsoft:");
PrintPropreties(class_converted_ns);
Console.WriteLine("\n\n");
// ----- JavaScriptSerializer Method -----
// Deserialize the string by specifying the object type
List<Int32> list_converted_js = new JavaScriptSerializer().Deserialize<List<Int32>>(list_str);
Console.WriteLine(
"Converted List - JavaScriptSerializer: " + String.Join(", ", list_converted_js) + "\n");
Custom_Class class_converted_js =
new JavaScriptSerializer().Deserialize<Custom_Class>(custom_class_str);
Console.WriteLine("Converted Class - JavaScriptSerializer:");
PrintPropreties(class_converted_js);
Console.ReadLine();
}
public class Custom_Class {
// Custom Class created for the purposes of this tutorial
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birthday { get; set; }
}
public static void PrintPropreties(object obj) {
// Uses the System.Component Model to read each property of a class and print its value
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj)) {
string name = descriptor.Name;
object value = descriptor.GetValue(obj);
Console.WriteLine("{0}: {1}", name, value);
}
}
}
}
Ce code affichera la liste d’entiers joints par des virgules et toutes les propriétés de la classe personnalisée convertie. Vous pouvez observer que les deux méthodes produiront le même résultat.
Production :
Converted List - Newtonsoft : 1, 2, 3, 9, 8,
7
Converted Class -
Newtonsoft : Name : John Doe Age : 21 Birthday : 01 / 01 /
2000 12 : 00 : 00 am
Converted List -
JavaScriptSerializer : 1,
2, 3, 9, 8,
7
Converted Class -
JavaScriptSerializer : Name : John Doe Age : 21 Birthday : 01 / 01 / 2000 12 : 00 : 00 am
Article connexe - Csharp JSON
- C# Parse JSON
- C# Convertir l'objet en une chaîne JSON
- Convertir une chaîne en objet JSON en C#
- Lire un fichier JSON en C#