首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以递归方式遍历jsondocument

问以递归方式遍历jsondocument
EN

Stack Overflow用户
提问于 2020-04-03 16:56:41
回答 2查看 1.6K关注 0票数 2

我需要遍历一个sort文档,并根据我遇到的JsonValueKind执行某种检查。

我试着以这样的方式进行验证检查

代码语言:javascript
复制
public bool Dec(JsonElement Element)
{

    var ElementEnumeratable = Element.EnumerateObject();

    foreach (var Elm in ElementEnumeratable )
    {
        string name = Elm.Name;
        switch (Elm.Value.ValueKind)
        {
            case JsonValueKind.Array:
                var jArray = Elm.Value;
                return Dec(jArray);
            case JsonValueKind.String:
                string jString = Elm.Value.GetString();
                break;
            case JsonValueKind.Number:
                int jNumber = Elm.Value.GetInt32();
                break;
        }
    }

    return true;
}

这里的问题是,当Elm有ValueKind数组时-我不能把它传递给Dec,它看起来像是JsonElement,它有valuekind作为数组,不能转换成EnumerateObject?

在这里做什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-03 18:49:46

据我所知,如果ValueKind是JsonValueKind.Array,那么你需要使用EnumerateArray()来迭代数组,这样你就有了JElement,并调用Dec foreach元素来验证它们,如下所示:

代码语言:javascript
复制
public static bool Dec(JsonElement Element)
{

    var ElementEnumeratable = Element.EnumerateObject();

    foreach (var Elm in ElementEnumeratable)
    {
        string name = Elm.Name;
        switch (Elm.Value.ValueKind)
        {
            case JsonValueKind.Array:
                var jArray = Elm.Value;
                foreach (var item in jArray.EnumerateArray())
                {
                    Dec(item);
                }
                break;
            case JsonValueKind.String:
                string jString = Elm.Value.GetString();
                break;
            case JsonValueKind.Number:
                int jNumber = Elm.Value.GetInt32();
                break;
        }
    }

    return true;
}
票数 3
EN

Stack Overflow用户

发布于 2020-04-03 17:11:42

我想你换错地方了。如果使用数组调用Dec(),它仍将调用EnumerateObject()。它需要为数组调用EnumerateArray()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61008290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档