Convertir cadena JSON en objeto C#
-
Convierta una cadena JSON en un objeto C# usando
Newtonsoft.Json
- Convierta una cadena JSON en un objeto C# usando JavaScriptSerializer
-
Convertir una cadena JSON en un ejemplo de código de objeto
C#
Este tutorial demostrará cómo convertir una cadena JSON en un objeto C# usando dos métodos diferentes.
El primero usa la librería Newtonsoft.Json
, mientras que el segundo usa el JavaScriptSerializer
. Ambos métodos son similares pero usan una sintaxis ligeramente diferente y requieren referencias diferentes.
Convierta una cadena JSON en un objeto C# usando Newtonsoft.Json
La biblioteca Newtonsoft.Json
es un marco JSON de uso común para .NET
. Esta biblioteca se puede utilizar después de instalar el paquete en su solución. Puede usar la CLI de .NET con el siguiente comando para instalar el paquete.
> dotnet add package Newtonsoft.Json --version 13.0.1
Una cadena JSON se puede convertir en cualquier tipo de objeto C# siempre que sea una cadena JSON válida para el tipo de objeto. Esto se hace deserializando la cadena, convirtiéndola en el tipo especificado (T) y proporcionando la cadena JSON de entrada.
JsonConvert.DeserializeObject<T>(json_string);
Convierta una cadena JSON en un objeto C# usando JavaScriptSerializer
Una opción más antigua para convertir cadenas JSON en objetos C# es JavaScriptSerializer
. Si bien no es tan rápido como la solución Newtonsoft.Json
, aún se puede utilizar bien. Para usar este método, debe agregar una referencia a System.Web.Extensions.dll
a su proyecto.
Para agregar la referencia, siga los pasos a continuación.
-
Navegar al Explorador de soluciones
-
Haga clic derecho en Referencias
-
Haga clic en
Add Reference
-
Haga clic en la pestaña
Assemblies
a la izquierda -
Busque el archivo
System.Web.Extensions.dll
y haga clic enOK
.
El JavaScriptSerializer
funciona de manera similar al método Newtonsoft.Json
en el sentido de que solo requiere la cadena JSON y el tipo en el que se va a deserializar.
JavaScriptSerializer().Deserialize<T>(json_string)
Convertir una cadena JSON en un ejemplo de código de objeto C#
El siguiente código de ejemplo muestra cómo convertir una cadena JSON en un objeto C# de cualquier tipo mediante las funciones JsonConvert.DeserializeObject<T>
y JavaScriptSerializer
. Para este ejemplo, estamos convirtiendo cadenas en un objeto de lista que contiene números enteros ( List<Int32>
) y en una clase personalizada que también especificamos en el programa.
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);
}
}
}
}
Este código generará la lista de enteros unidos por comas y todas las propiedades dentro de la clase personalizada convertida. Puede observar que ambos métodos producirán el mismo resultado.
Producción :
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
Artículo relacionado - Csharp JSON
- C# Parse JSON
- C# Convertir el objeto en una cadena JSON
- Deserializar JSON con C#
- Escribir JSON en un archivo en C#
- Publicar JSON en un servidor en C#