我想知道是否可以迭代包含Expando对象数组的ExpandoObject?
我目前正在使用如下文件结构解析一些JSON:
"event":
[{
"name": "BEGIN!",
"count": 1
}],
"context":
{
"customer": {
"greetings":
[
{ "Value1": "Hello" },
{ "Value2": "Bye" }
],
"nicknames": []
}
}
我可以通过执行以下操作来检索'event'的expando对象:
GenerateDictionary(((ExpandoObject[])dict["event"])[0], dict, "event_");
这是GenerateDictionary方法的代码:
private void GenerateDictionary(System.Dynamic.ExpandoObject output, Dictionary<string, object> dict, string parent)
{
try
{
foreach (var v in output)
{
string key = parent + v.Key;
object o = v.Value;
if (o.GetType() == typeof(System.Dynamic.ExpandoObject))
{
GenerateDictionary((System.Dynamic.ExpandoObject)o, dict, key + "_");
}
else
{
if (!dict.ContainsKey(key))
{
dict.Add(key, o);
}
}
}
}
catch (Exception ex)
{
WritetoLog(itemname, ex);
}
}
我现在完全坚持如何检索'context_customer_greetings'中的所有值,因为当我尝试执行以下操作时,它只会在context_customer_greetings_value1中检索对象。
GenerateDictionary(((System.Dynamic.ExpandoObject[])dict["context_customer_greetings"])[0], dict, "context_customer_greetings_");
是否可以迭代ExpandoObject?
我希望这是有道理的,请事先感谢你。
答案 0 :(得分:0)
我现在已经找到了解决方案(尽管很简单!)
我创建了一个新的动态对象,然后使用上面相同的方法迭代它。
dynamic s = dict["context_custom_greetings"];
foreach(ExpandoObject o in s)
{
GenerateDictionary((ExpandoObject)o, dict, "context_custom_greetings_");
}