我正在尝试从JSON结构构建TreeNodes的层次结构。递归读取文件工作正常(即Console.WriteLine生成正确的输出),但我无法正确创建TreeNodes结构。
我很确定我的问题与我在递归调用函数时没有传递正确的TreeNode的事实有关,但我不知道如何更改代码。当JToken类型是一个字符串时,我只想创建一个新节点,但如果JToken类型是一个数组,则只能递归调用该函数.......
// calling function
// ================
JArray geoscheme = (JArray)(JsonConvert.DeserializeObject(file));
TreeNode parentNode = new TreeNode()
{
Name = "RootNode"
};
foreach (JToken location in geoscheme)
{
GetChildNodes(location, parentNode);
}
// recursive function - works except the treeview bits
// ===================================================
public void GetChildNodes(JToken location, TreeNode parentNode)
{
foreach (JToken item in location)
{
if (item.Type == JTokenType.String)
{
TreeNode childNode = new TreeNode()
{
Name = item.Value<string>()
};
parentNode.Nodes.Add(childNode);
// Console.WriteLine(item.Value<string>());
}
if (item.Type == JTokenType.Array)
{
GetChildNodes(item, parentNode);
}
}
}
以下是我使用的JSON结构的片段:
[
[
"World",
[
"Continents",
[
"Africa",
[
"Northern Africa",
"Sub-Saharan Africa",
[
"Eastern Africa",
"Central Africa",
"Southern Africa",
....