Как я могу вызвать значение из Jtoken

#c# #json #json.net

#c# #json #json.net

Вопрос:

Итак, у меня есть объект JSON, затем я перебираю все дочерние элементы и добавляю элементы в список JTokens. При отладке список содержит следующее:https://imgur.com/a/7Pap9Xz

Когда я показываю окно сообщения, я получаю следующее:https://imgur.com/a/9KHYCP3

Проблема в том, что мне просто нужен текст строки как: ‘Доброволец’. Как я могу это сделать?

 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.Роль;

Ответ №1:

Вы можете использовать SelectToken , в котором вы можете выбрать желаемую базу значений на их пути. Смотрите эту ссылку.

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

Ответ №2:

Вы можете попробовать с этим:

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

С помощью рекурсии вы можете пройти через весь объект json, не зная полного пути к атрибутам