Soy nuevo en C # .NET. Estoy tratando de añadir mi Jarray
a un diccionario Dictionary<string, dynamic>
y luego a una lista List<Dictionary<string, dynamic>>
.
Mi cadena es algo así como:
Response = "[{\"name\":\"ABCD\",\"caption\":\"ABCDCaption\",\"description\":\"ABCDDesc\"},{\"name\":\"ABCD\",\"caption\":\"ABCDCaption\",\"description\":\"ABCDCaption\"},{\"name\":\"XYZ.exe\",\"caption\":\"XYZCaption\","description":\"XYZdesc\"}]"
El código es:
JArray a = JArray.Parse(Response);
foreach (JObject o in bb.Children<JObject>())
{
foreach (JProperty p in o.Properties())
{
string name = p.Name;
var value = p.Value;
DicSQLData.Add(key: name, value: value);
}
ListSQLData.Add(DicSQLData);
}
Funciona bien para el primer conjunto de datos
{\"name\":\"ABCD\",\"caption\":\"ABCDCaption\",\"description\":\"ABCDDesc\"}
Por segundo conjunto que da el error como diccionario no añade clave duplicada. ¿Cómo arreglar esto? Cualquier ayuda es muy apreciada.
Creo que nos estamos perdiendo una parte del código, pero estamos viendo que el error porque no estás inicializar un nuevo diccionario en cada iteración del bucle, vas a insertar en el mismo diccionario causando los errores fundamentales.
Trate de hacer esto en su lugar. Observe cada iteración hace un nuevo diccionario y luego lo inserta en la lista
JArray a = JArray.Parse(Response);
foreach (JObject o in bb.Children<JObject>())
{
//make new dictionary
var DicSQLData = new Dictionary<string, dynamic>();
foreach (JProperty p in o.Properties())
{
string name = p.Name;
var value = p.Value;
DicSQLData.Add(key: name, value: value);
}
//add dictionary to list
ListSQLData.Add(DicSQLData);
}