C#使用变量访问JObject类的动态成员

时间:2014-03-12 12:30:27

标签: c# json reflection json.net

我有一个JObject类,成员是动态的,但是当成员名称存储在变量中时,我不知道如何访问动态成员。

代码如下。

 dynamic deserializedProduct = JObject.Parse(json);
 string[] user = emailBox.Text.Split('@');
 string pass = deserializedProduct.user[0].password;
 MessageBox.Show(pass);

// User[0] represents the member name

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

如果它是动态的,你应该可以像访问它一样来访问它

deserializedProduct .user

但我想你需要var用户里面的值。

在这种情况下,西风有很多实用工具可以扩展Expando对象。

检查 http://weblog.west-wind.com/posts/2012/Feb/08/Creating-a-dynamic-extensible-C-Expando-Object

答案 1 :(得分:0)

正如@Adriano在评论中所提到的,JObject有字符串索引器。它更适合使用该索引器,而不是在公共对象属性名称样式中执行此操作:

........  
string pass = ((dynamic)deserializedProduct[user[0]]).password;
//or full string indexer style
//string pass = deserializedProduct[user[0]]["password"];
MessageBox.Show(pass);