Mapeo de pares clave-valor dinámico Json sin el uso de dynamic o Dictionary en C#
Tengo un json como el siguiente:
{
"date": "2021-12-04",
"SMIFUND": {
"ACC": 5.7299,
"TATA": 5.155546,
"RELIANCE": 108.779225
}
}
Ahora,
SMIFUND -> (parámetro de entrada para obtener este resultado json)
ACC, TATA, RELIANCE -> dinámico
Ahora, como parte de la tarea, tengo que deserializar usando Newtonsoft.json
y no puedo usar Dictionary<string, float="">
o dynamic
, sino deserializar directamente el json completo o la sección SMIFUND
.
Mi estructura de clase es la siguiente:
public class Broker
{
public string Date { get; set; }
public List<fund> funds{ get; set; }
}
public class Fund
{
public string StockName { get; set; }
public float Price { get; set; }
}
Puedo dividir el resultado en dos partes:
JObject jsonObject = JObject.Parse(result);
brokerObject.Date = (string)jsonObject["date"];
Pero cuando intento convertir a una lista de Fund
, me muestra un error de deserialización de nombre de valor:
“`csharp
var fundsList = JsonConvert.DeserializeObject<><fund>>(jsonObject["{input}"].ToString());
{input} es SMIFUND
“`</string,>
davy.ai
Para deserializar directamente la sección
SMIFUND
sin usarDictionary<string, float="">
nidynamic
, puedes modificar la estructura de la claseBroker
para tener una propiedadDictionary<string, float="">
en lugar de una propiedadList<fund>
:Luego, puedes deserializar la cadena JSON directamente en un objeto
Broker
:Para acceder a la sección
SMIFUND
, simplemente puedes usar la propiedadFunds
del objetoBroker
:Esto imprimirá:
ACC: 5.7299
</string,></string,></string,></string,></string,>TATA: 5.155546
RELIANCE: 108.779225