如何在IDictionary中存储多个项目?

时间:2016-04-12 14:48:22

标签: c#

我有IDictionary声明:IDictionary<string, string> trace;
在其中我想保存一个由json反序列化返回的元素列表,实际上我这样做:

var obj = JsonConvert.DeserializeObject<List<RootObject>>(responseText);

foreach (var item in obj)
{
    trace["date"] = item.trace.details.date; 
    trace["type"] = item.trace.details.type;

    foreach (var trace in item.trace.context.context)
    {
          trace["context"] = JsonConvert.SerializeObject(trace);
    }
}

现在这段代码运行良好,但只保存迭代的最后一项,这是因为当我遍历项目时date, type etc...被替换,但我希望将项目存储在每次新迭代中不替换它。
如何使用IDictionary执行此操作?

请注意: trace.x是反序列化json的类的名称。

进一步的问题:也许使用IDictionary不是一个好主意实现这个?

1 个答案:

答案 0 :(得分:4)

看起来你最好使用专门的课程,如下所示:

print "<tr><td>$_<br/></td></tr>\n" for @fruitArray;

然后,对于APPLE|0 ORANGE|0 PEAR|1 GRAPE|0 TOMATO|1 中的每个值,使用/([|])\w+/ 创建一个public class TraceInfo { public string Date { get; set; } public string Type { get; set; } public List<string> ContextItems { get; set; } } 对象并设置其属性。

然后,您可以将它们存储在objTraceInfo中,您可以选择。