【问题标题】:How to get values for all children nodes in a JSON class C#如何获取 JSON 类 C# 中所有子节点的值
【发布时间】:2017-02-08 20:56:54
【问题描述】:

我目前通过使用 3 个嵌套的 forloops 来获取值。我已经将 JSON 反序列化为 someCollection 类。我在网上看到了类似的例子,但我希望有人能解释我如何让它发挥作用。 谢谢

private List<Guid> GetIds(SomeCollection someList)
    {
        var list = new List<Guid>();

        for (int i = 0; i < someList.Categories.Count; i++)
        {
            for (int j = 0; j < someList.Categories[i].Categories.Count; j++)
            {
                for (int k = 0; k < someList.Categories[i].Categories[j].Categories.Count; k++)
                {
                    list.Add(Guid.Parse((someList.Categories[i].Categories[j].Categories[k].Key)));
                }
                list.Add(Guid.Parse((someList.Categories[i].Categories[j].Key)));
            }
            list.Add(Guid.Parse((someList.Categories[i].Key)));
        }
        return list;

【问题讨论】:

  • 这是一个应该使用递归调用的典型案例。
  • 谢谢@Graffito。我遇到的麻烦是如何以动态调用子类别的方式实现递归。即此代码仅下降三个级别。我不确定如何实现一个条件来检查是否有更多可用的子类别

标签: c# .net for-loop recursion


【解决方案1】:

以递归方式等效于您的代码:

var list = new List<Guid>();
GetIds(someList,list) ;

private void GetIds(SomeCollection someList,List<Guid> list)
{
  for (int i = 0; i < someList.Categories.Count; i++) 
  {
     GetIds (someList.Categories[i],list) ;
     list.Add(Guid.Parse((someList.Categories[i].Key))) ;
  } 
}

【讨论】:

  • 非常感谢@Graffito。它进行了一些小的修改,我能够理解和学习。
猜你喜欢
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多