动态将嵌套属性添加到ExpandoObject

Ale*_*lex 5 c# dynamic expandoobject

我正在获取一个JSON对象(可能包含多个级别的JSON数组等),我想将其转换为ExpandoObject。

我想出了如何在实现IDictionary的情况下在运行时向ExpandoObject添加简单属性,但是如何在运行时添加可正确解析的嵌套属性(例如,类似myexpando.somelist.anotherlist.someitem)。

编辑:当前这适用于简单的(第一级)属性:

var exo = new ExpandoObject() as IDictionary<String, Object>;
exo.Add(name, value);
Run Code Online (Sandbox Code Playgroud)

问题是如何获取要嵌套的名称以及如何相应地解析ExpandoObject。

小智 5

dynamic myexpando = new ExpandoObject();
myexpando.somelist = new ExpandoObject() as dynamic;
myexpando.somelist.anotherlist = new ExpandoObject() as dynamic;
myexpando.somelist.anotherlist.someitem = "Hey Hey There! I'm a nested value :D";
Run Code Online (Sandbox Code Playgroud)


Mar*_*num 1

这样做怎么样:

var exo = new ExpandoObject() as IDictionary<String, Object>;
var nested1 = new ExpandoObject() as IDictionary<String, Object>;

exo.Add("Nested1", nested1);
nested1.Add("Nested2", "value");

dynamic d = exo;
Console.WriteLine(d.Nested1.Nested2); // Outputs "value"
Run Code Online (Sandbox Code Playgroud)