如何递归地迭代json数据

本文关键字:迭代 json 数据 递归 何递归 | 更新日期: 2023-09-27 18:12:16

如何通过给定的Jtoken键搜索json数据,这个Jtoken可以在json数据中的任何地方。我发现下面的代码,它的工作原理,但由于json是新的对我来说,只是想知道如果有更好的解决方案

       //resources is some json data
       JToken node = JToken.Parse(resources);
        var ids = new List<string>();
        WalkNode(node, n =>
        {
            JToken token = n["OrderId"];
            if (token != null && token.Type == JTokenType.String)
                mediaLinkHrefs.Add(token.Value<string>());
        });

    private static void WalkNode(JToken node, Action<JObject> action)
    {
        if (node.Type == JTokenType.Object)
        {
            action((JObject)node);
            foreach (JProperty child in node.Children<JProperty>())
            {
                WalkNode(child.Value, action);
            }
        }
        else if (node.Type == JTokenType.Array)
        {
            foreach (JToken child in node.Children())
            {
                WalkNode(child, action);
            }
        }
    }

如何递归地迭代json数据

选择更快的方式,如:

转到http://json2csharp.com/粘贴你的json,它将创建一个自定义类/从你的json派生。

在system .web.script.serialization

中使用javascriptserializer进行调用

假设您将json响应放入S字符串中,并且您的类命名为RootObject

string S = JSON;
javascriptserializer js = new javascriptserializer();
RootObject o = js.deserialize<RootObject>(S);
dim S a string=JSON 'your json string
dim jsas new javascriptserializer
dim o as RootObject=js.deserialize(of RootObject)(s)

那么你可以简单地使用linq,就可以了。

3行代码:D

希望能帮到你。