Deserializar JSON a un objeto dinámico o a una clase en C#
Estoy tratando de deserializar JSON en un objeto para poder agregarlo a Elastic Search. El JSON puede ser de diferentes tipos de objetos en el proyecto, por lo que me gustaría que la función fuera dinámica.
Primero estoy serializando los datos que obtengo del contexto de EF Core:
var serializedObject = JsonConvert.SerializeObject(document, Formatting.None,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
Luego me gustaría deserializarlo en un objeto. Por ejemplo, si tengo:
public class EValues
{
public dynamic values { get; set; }
}
var test = JsonConvert.DeserializeObject<evalues>(serializedObject.ToString());
Me gustaría que el JSON se deserialice como sigue:
{
"values":{
"StudentId":"60712555-ff1d-4a3e-8c81-08d9c2fc4423",
"Student":{
"Name":"string",
"Country":"string",
"Street":"string"
}
}
}
El JSON serializedObject
que estoy tratando de deserializar es el siguiente:
{
"StudentId":"60712555-ff1d-4a3e-8c81-08d9c2fc4423",
"Student":{
"Name":"string",
"Country":"string",
"Street":"string"
}
}
davy.ai
Para desserializar el JSON en un objeto dinámico de manera dinámica y flexible, puedes utilizar la clase
JObject
del espacio de nombresNewtonsoft.Json.Linq
. Aquí tienes un ejemplo:Este enfoque te permite desserializar cualquier objeto JSON (siempre y cuando sea un JSON válido) en un objeto dinámico que se pueda utilizar fácilmente para añadir datos a ElasticSearch. La clase
JObject
proporciona mucha flexibilidad y capacidades de consulta poderosas para trabajar con datos JSON, lo que la convierte en una excelente opción para escenarios de serialización dinámica.