Ich versuche zu bestimmen, wie auf die Daten in meinem JObject zugegriffen werden soll, und ich kann für mein ganzes Leben nicht bestimmen, wie ich sie verwenden soll.
JObject Object = (JObject)Response.Data["my_key"];
Ich kann es mit Console.WriteLine (Object) auf der Konsole drucken und sehe die Daten wie folgt:
{
"my_data" : "more of my string data"
...
}
Aber ich habe KEINE Ahnung, wie ich es einfach durchlaufen / aufzählen soll. Hat jemand irgendwelche Ideen? Ich bin gerade so ratlos.
((IEnumerable<KeyValuePair<string, JToken>>)obj).Select(...)
statt schlicht altobj.Select(...)
; oder zumindest fand ich es einen Teil meines Codes.obj
hatte TypJObject
; aberJObject
scheint ähnliche Probleme zu habendynamic
. Der Compiler kann die Typargumente nicht ableiten.Select
. Ich kann sie explizit geben, funktioniertobj.Select<KeyValuePair<string, JToken>, (result type)>(...)
auch für michJObject
beideIEnumerable<KeyValuePair<string, JToken>>
undIEnumerable<JToken>
(indirekt durchJContainer
) implementiert .JToken value
, um den nächsten Satz von Paaren zu durchlaufen?JObjects können über JProperty- Objekte aufgelistet werden, indem sie in ein JToken umgewandelt werden :
Wenn Sie ein verschachteltes JObject in einem anderen JObject haben, müssen Sie es nicht umwandeln, da der Accessor ein JToken zurückgibt:
quelle
obj.Properties().Select(p => p.Name + ": " + p.Value)
.Die Antwort hat bei mir nicht funktioniert. Ich weiß nicht, wie es so viele Stimmen bekommen hat. Obwohl es mir geholfen hat, mich in eine Richtung zu weisen.
Dies ist die Antwort, die für mich funktioniert hat:
quelle
Für Leute wie mich, Linq-Süchtige und basierend auf der Antwort von svick , hier ein Linq-Ansatz:
Jetzt können Sie Linq-Ausdrücke wie folgt erstellen:
Oder nur:
Oder dieses, um alle Daten zu durchlaufen:
quelle