递归地构建TreeNodes的层次结构 - 几乎在那里但不完全

时间:2017-12-13 11:00:42

标签: json recursion treeview

我正在尝试从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",
              ....

0 个答案:

没有答案