Я пытаюсь определить, как получить доступ к данным, находящимся в моем JObject, и я не могу, хоть убей, определить, как их использовать.
JObject Object = (JObject)Response.Data["my_key"];
Я могу распечатать его на консоли, выполняя Console.WriteLine (Object), и я вижу данные, это выглядит так:
{
"my_data" : "more of my string data"
...
}
Но я не знаю, как просто перебирать / перечислять его, у кого-нибудь есть идеи? Я сейчас в таком недоумении.
((IEnumerable<KeyValuePair<string, JToken>>)obj).Select(...)
вместо старенькогоobj.Select(...)
; или, по крайней мере, то, что я нашел, это одна часть моего кода.obj
был типJObject
; ноJObject
похоже есть проблемы, похожие наdynamic
. Компилятор не может определить аргументы типа.Select
. Я могу дать их явно,obj.Select<KeyValuePair<string, JToken>, (result type)>(...)
мне тоже подходит,JObject
реализует обаIEnumerable<KeyValuePair<string, JToken>>
иIEnumerable<JToken>
(косвенно черезJContainer
).JToken value
для перебора следующего набора пар?Объекты JObject можно перечислить с помощью объектов JProperty, преобразовав их в JToken :
Если у вас есть вложенный JObject внутри другого JObject, вам не нужно выполнять приведение, потому что метод доступа вернет JToken:
источник
obj.Properties().Select(p => p.Name + ": " + p.Value)
.Ответ у меня не сработал. Я не знаю, как он получил столько голосов. Хотя это помогло мне указать направление.
Этот ответ сработал для меня:
источник
Для таких людей, как я, наркоманов linq и на основе ответа svick , здесь подход linq:
Теперь вы можете создавать выражения linq, например:
Или просто:
Или этот для перебора всех данных:
источник