json遍历问题

.Net技术 码拜 4年前 (2016-09-27) 374次浏览
遍历一个树状的json 代码如下,主要功能是判断能否有个键值能否存在

public static bool HasFunction(JArray jsonArray, string functionValue)
        {
            if (jsonArray == null)
                return false;
            else
            {
                foreach (JObject items in jsonArray)
                {
                    foreach (var item in items)
                    {
                        
                        if (item.Key.ToString() == "functionKey" && item.Value.ToString() == functionValue)
                            return true;
                        else
                        {
                            if (item.Key.ToString() == "children")
                            {
                                JArray jar = JArray.Parse(item.Value.ToString());
                                HasFunction(jar, functionValue);
                            }
                        }
                        
                    }
                }
            }
            return false;
        }

问题来了。返回总是为false,总感觉这个return false的地方不对。

解决方案

40

引用:
Quote: 引用:

谁知道那个json长啥样
还有functionValue写错了也说不定啊

那些是肯定没有错,就是东西找到了,return了true,但是原因是递归过后继续执行上一层,又继续return了false,从而导致最终return的false。

那么
HasFunction(jar, functionValue);
这行改成
if( HasFunction(jar, functionValue))
return true;


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明json遍历问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)