Ich arbeite bei der Analyse einer JSON HTTP-Antwort mit Json.NET und habe funktionierenden Code, aber bin mir ziemlich sicher, dass ich übermäßig kompliziert darüber gehe. Meine Frage ist, ob es einen direkteren Weg gibt, ein Kind durch Pfad jToken zu bekommen und/oder zu deserialisieren, ohne jede Ebene zu unterlaufen.Json.NET bekommen geschachtelt jToken Wert
habe ich versucht, diesen Ansatz, aber es gibt null zurück:
JObject jObj = JObject.Parse(text);
JToken myVal;
jObj.TryGetValue("response.docs", out myVal);
Hier ist meine übermäßig komplizierten Code arbeiten, einschließlich Deserialisierung:
JObject jObj = JObject.Parse(text);
foreach(var kv in jObj) {
if(kv.Key == "response") {
foreach(JToken jt in kv.Value) {
if(jt.Path == "response.docs") {
JEnumerable<JToken> children = jt.Children();
foreach(JToken t in children) {
//THIS WORKS BUT IS NOT ELEGANT
Solr_User[] su = t.ToObject<Solr_User[]>();
}
}
}
}
}
Und hier ist die rohe Reaktion JSON nur als Referenz :
{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"indent":"on",
"wt":"json"}},
"response":{"numFound":4,"start":0,"docs":[
{
"id":3,
"first_name":"Bob",
"_version_":"1558902640594649088"},
{
"id":4,
"first_name":"Sam",
"_version_":"1558902640613523456"},
{
"id":2,
"first_name":"Fred",
"_version_":"1558902640613523457"},
{
"id":1,
"first_name":"Max",
"_version_":"1558902640613523458"}]
}}
Fantastisch, und genau das, was ich gesucht habe, danke! – edencorbin