C# Как добавить Джаррея в список > - PullRequest
0 голосов
/ 02 апреля 2020

Я новичок в C#. net. Я пытаюсь добавить свой Jarray в словарь Dictionary<string, dynamic>, а затем в список List<Dictionary<string, dynamic>>.

Моя строка выглядит примерно так:

Response = "[{\"name\":\"ABCD\",\"caption\":\"ABCDCaption\",\"description\":\"ABCDDesc\"},{\"name\":\"ABCD\",\"caption\":\"ABCDCaption\",\"description\":\"ABCDCaption\"},{\"name\":\"XYZ.exe\",\"caption\":\"XYZCaption\","description":\"XYZdesc\"}]"

Код:

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);

}

Отлично работает для первого набора данных

{\"name\":\"ABCD\",\"caption\":\"ABCDCaption\",\"description\":\"ABCDDesc\"}

Для второго набора выдает ошибку, так как словарь не добавляет дубликат ключа. Как это исправить? Любая помощь очень ценится.

1 Ответ

0 голосов
/ 02 апреля 2020

Я думаю, что нам не хватает некоторого кода, но вы видите эту ошибку, потому что вы не инициализируете новый словарь на каждой итерации l oop, вы вставляете в тот же словарь, вызывая ключевые ошибки ,

Попробуйте сделать это вместо этого. Обратите внимание, что каждая итерация создает новый словарь, а затем вставляет его в список

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);
}
...