如何从Jtoken调用值

时间:2019-04-04 09:02:22

标签: c# json json.net

所以我有一个JSON对象,然后遍历所有Children,并将这些项添加到JTokens列表中。当我调试时,列表包含以下内容: https://imgur.com/a/7Pap9Xz

当我显示一个MessageBox时,我得到以下信息: https://imgur.com/a/9KHYCP3

问题是,我只希望字符串文本为:“ Volunteer”。我该怎么办?

List<JToken> objecten = new List<JToken>();

JObject json = JObject.Parse(content);
foreach (JToken token in json.Children<JToken>())
{
   objecten.Add(token);
}

MessageBox.Show(objecten[1].ToString());

如果我想在字符串变量中获得角色,我想这样做,但是我不知道它是如何工作的:

字符串角色= objecten.Role;

2 个答案:

答案 0 :(得分:1)

您可以使用SelectToken,其中可以根据其路径选择期望值。参见此reference

JObject json = JObject.Parse(content);    
var value = json.SelectToken("role").Value<string>();      

添加路径以选择role。路径将取决于您的JSON结构。

内容示例值

{
   response : {
       role : volunteer,
       success: true,
       token: eyJhbGci...
   }
}

JObject json = JObject.Parse(content);    
var value = json.SelectToken("response.role").Value<string>();

答案 1 :(得分:0)

您可以尝试以下操作:

JObject json = JObject.Parse(content);
foreach (KeyValuePair<string, JToken> sourcePair in json)
           {
               if (sourcePair.Key == "Role")
                    role = sourcePair.Value.ToString();
            }

通过递归,您可以在不知道属性的完整路径的情况下遍历所有json对象