JSON.NET Auswählen von Elementen in Arrays mit linq
Brauche ich, um wählen Sie einige Werte aus der json-Antwort. Im mit json.net, gut mit den einfacheren Sachen, aber es scheint nicht zu viel Dokumentation/tutorials auf alles Vergangenheit. In der json-Beispiel unten habe ich auswählen müssen, um alle Altersgruppen:
{
"teacherHolder": [{
"id": 200000001,
"name": "Mr Test",
"class": "a4",
"students": [{
"id": "100532469",
"name": "ben"
},
{
"id": "100506025",
"name": "bill"
},
{
"id": "100000447",
"name": "bob"
}]
}]
}
Habe ich versucht, diese und andere Variationen:
var stuff = response["teacherHolder"].Children()["students"];
var names = from y in stuff.Children().Values()
select y["name"];
und so:
var names= response["teacherHolder"]
.Select(s => (string)s.SelectToken("students[0].name")).ToList();
Antwort ist ein JObject aus einem webrequest.
Ich bekomme nur das zurück:
[{"Key":"Newtonsoft.Json.Linq.JEnumerable`1[Newtonsoft.Json.Linq.JToken]","Value":"Newtonsoft.Json.Linq.JEnumerable`1[Newtonsoft.Json.Linq.JToken]"}]
Die Ergebnisse werden schließlich in einem Wörterbuch.
Jede Idee, wie dies zu tun? ich weiß, es wird einfach sein, nur ich habe nicht gefunden, die passende Kombination.
InformationsquelleAutor gdp | 2012-04-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um die Namen aller Schüler, alle Lehrer, die Sie tun können, es zum Beispiel so:
Oder, als weitere option:
Wenn Sie wollen, dass Sie als
IEnumerable<string>
, fügen Sie einfachValue<string>()
am Ende derselect
. Oder fügen SieValues<string>()
, wenn Sie mit der ersten option.Aber es ist normalerweise besser, erstellen Sie Typen für Ihr Objekt-Modell, so dass Sie mit Ihnen arbeiten können als mit normalen Objekten und nicht wie einige spezielle JSON-Objekte.
Wenn Sie haben, dass Sie etwas tun können, wie:
Ja, das ist, warum ich sagte, Sie brauchen, um hinzuzufügen
Values<string>()
wenn Sie möchten, eine Sammlung vonstring
s.Hi svick habe ich die Werte der<Zeichenfolge>() am Ende. seine nun: var Namen = Schüler.(Kinder)["name"].Werte<Zeichenfolge>();
InformationsquelleAutor svick