У меня есть следующие JSON документ, хранящийся в текстовом файлеJSON.NET - Путаница в получении Родитель от 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" : {}
}
Я написал этот код в C# с использованием NewtonSoft Json.NET Library
string content = File.ReadAllText(@"c:\temp\foo.txt");
JToken token = JToken.Parse(content);
JToken p2 = token["children"]["ProductA"]["children"]["ProductC"];
Это работает, и я получаю узел для p2.
Однако ... если я хочу узел ParentA из узла p2. Я должен сказать, что
JToken p1 = p2.Parent.Parent.Parent.Parent.Parent;
Console.WriteLine(((JProperty)p1).Name);
код, приведенный выше гравюр «ProductA» ... Но запутанная часть является то, что почему я должен назвать родительским «5» раз.
Когда я смотрю на свой документ, я вижу, что «дети» являются родителями «ProductC», а затем «ProductA» является родительским элементом для детей. Поэтому 2 вызова родителя должны были получить ParentA.
Зачем мне 5 звонков?
Предлагаю вам посмотреть, что у вас есть на каждом уровне «родителя». Я не знаю ответа, но это будет мой следующий диагностический шаг. –