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

本文关键字:动态 成员 JObject 变量 访问 | 更新日期: 2023-09-27 17:49:37

我有一个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

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

如果它是动态的,你应该能够访问它,就好像它只是一个属性

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);