J'essaie de déterminer comment accéder aux données qui se trouvent dans mon JObject et je ne peux pas pour la vie de moi déterminer comment l'utiliser.
JObject Object = (JObject)Response.Data["my_key"];
Je peux l'imprimer sur la console en faisant Console.WriteLine (Object) et je vois les données, cela ressemble à:
{
"my_data" : "more of my string data"
...
}
Mais je n'ai aucune idée de comment simplement itérer / énumérer à travers elle, quelqu'un a des idées? Je suis tellement perdu en ce moment.
((IEnumerable<KeyValuePair<string, JToken>>)obj).Select(...)
au lieu de plaine-vieuxobj.Select(...)
; ou du moins c'est ce que j'ai trouvé dans une partie de mon code.obj
j'avais le typeJObject
; maisJObject
semble avoir des problèmes similaires àdynamic
. Le compilateur ne peut pas déduire les arguments de type.Select
. Je peux les donner explicitement, celaobj.Select<KeyValuePair<string, JToken>, (result type)>(...)
fonctionne aussi pour moiJObject
implémente à la foisIEnumerable<KeyValuePair<string, JToken>>
etIEnumerable<JToken>
(indirectement à traversJContainer
).JToken value
pour parcourir l'ensemble de paires suivant?Les JObjects peuvent être énumérés via des objets JProperty en le convertissant en JToken :
Si vous avez un JObject imbriqué à l'intérieur d'un autre JObject, vous n'avez pas besoin d'effectuer un cast car l'accesseur renverra un JToken:
la source
obj.Properties().Select(p => p.Name + ": " + p.Value)
.La réponse n'a pas fonctionné pour moi. Je ne sais pas comment il a obtenu autant de votes. Bien que cela ait aidé à me diriger dans une direction.
Voici la réponse qui a fonctionné pour moi:
la source
Pour les gens comme moi, les accros de linq , et basé sur la réponse de svick , voici une approche linq:
Vous pouvez maintenant créer des expressions linq comme:
Ou juste:
Ou celui-ci pour itérer sur toutes les données:
la source