我有一个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
如果它是动态的,你应该能够访问它,就好像它只是一个属性
deserializedProduct .user
但是我猜你需要var user里面的值
在这种情况下,有来自westwind的伟大实用程序扩展了Expando对象。
检查http://weblog.west-wind.com/posts/2012/Feb/08/Creating-a-dynamic-extensible-C-Expando-Object
正如@Adriano在评论中提到的,JObject
有字符串索引器。使用该索引器更合适,而不是在通用对象属性名称样式中执行此操作:
........
string pass = ((dynamic)deserializedProduct[user[0]]).password;
//or full string indexer style
//string pass = deserializedProduct[user[0]]["password"];
MessageBox.Show(pass);