Как я могу перечислить через JObject?


Я пытаюсь определить, как получить доступ к данным, которые находятся в моем JObject, и я не могу для жизни меня определить, как его использовать.

JObject Object = (JObject)Response.Data["my_key"];

Я могу распечатать его на консоли, делая консоль.WriteLine (объект) и я вижу данные, это выглядит так:

{
 "my_data" : "more of my string data"
...
}

но я понятия не имею, как просто перебирать/перечислять через него, у кого-нибудь есть идеи? Я сейчас в такой растерянности.

3 75

3 ответа:

если вы посмотрите на документация JObject, вы увидите, что он реализует IEnumerable<KeyValuePair<string, JToken>>. Таким образом, вы можете перебирать его просто с помощью foreach:

foreach (var x in obj)
{
    string name = x.Key;
    JToken value = x.Value;
    …
}

JObjects можно перечислить через JProperty объекты, приведя его к JToken:

foreach (JProperty x in (JToken)obj) { // if 'obj' is a JObject
    string name = x.Name;
    JToken value = x.Value;
}

Если у вас есть вложенный JObject внутри другого JObject, вам не нужно бросать, потому что метод доступа вернет JToken:

foreach (JProperty x in obj["otherObject"]) { // Where 'obj' and 'obj["otherObject"]' are both JObjects
    string name = x.Name;
    JToken value = x.Value;
}

ответ не работа для меня. Я не знаю, как он получил так много голосов. Хотя это помогло мне указать направление.

Это ответ, который работал для меня:

foreach (var x in jobj)
{
    var key = ((JProperty) (x)).Name;
    var jvalue = ((JProperty)(x)).Value ;
}