Ho il seguente documento JSON memorizzato in un file di testoJSON.NET - Confusione a ottenere Parent da JToken
{
"attributes": {"attr0":"value0"},
"children" : {
"ProductA" : {
"attributes": {"attr1":"value1", "attr2":"value2"},
"children" : {
"ProductC":{
"attributes": {"attr3":"value3", "attr4":"value4"},
"children" : {},
"referencedChildren" : {}
}
},
"referencedChildren" : {}
},
"ProductB" : {
"attributes": {"attr5":"value5", "attr6":"value6"},
"children" : {},
"referencedChildren" : {}
}
},
"referencedChildren" : {}
}
Ho scritto questo codice in C# utilizzando NewtonSoft JSon.NET Biblioteca
string content = File.ReadAllText(@"c:\temp\foo.txt");
JToken token = JToken.Parse(content);
JToken p2 = token["children"]["ProductA"]["children"]["ProductC"];
Funziona e ottengo il nodo per p2.
Tuttavia ... se desidero il nodo per ParentA dal nodo p2. Devo dire
JToken p1 = p2.Parent.Parent.Parent.Parent.Parent;
Console.WriteLine(((JProperty)p1).Name);
Il codice di cui sopra stampe "Producta" ... Ma la parte di confusione è che il motivo per cui devo chiamare controllanti "5" volte.
Quando guardo il mio documento, posso vedere che "children" è il genitore di "ProductC" e quindi "ProductA" è il genitore dei bambini. Quindi 2 chiamate a Parent dovrebbero aver ottenuto il mio ParentA.
Perché ho bisogno di 5 chiamate?
Ti suggerisco di guardare quello che hai a ogni livello di "genitore". Non conosco la risposta, ma quello sarebbe il mio prossimo passo diagnostico. –