使用 NewtonSoft Json 在 C# 中获取 JSON 的所有子项

Posted

技术标签:

【中文标题】使用 NewtonSoft Json 在 C# 中获取 JSON 的所有子项【英文标题】:Get all Childrens of a JSON in C# using NewtonSoftJson 【发布时间】:2020-09-17 15:27:31 【问题描述】:

com 用户!

我的 Json:

我想给出所有名字 -> 用户名 1 和用户名。

我使用了 C# 和 newtonsoft.json

我希望有人可以帮助我。 我试过这样,但没有用:

"kind":"UserList",
"data":
   "children":[
      
         "name":"test1",
         "author_flair_text":null,
         "mod_permissions":[
            "all"
         ],
         "date":1506648472.0,
         "rel_id":"rb_r8mbbr",
         "id":"t2_x6piz",
         "author_flair_css_class":null
      ,
      
         "name":"username2",
         "author_flair_text":null,
         "mod_permissions":[
            "all"
         ],
         "date":1553842373.0,
         "rel_id":"rb_18jmxnv",
         "id":"t2_a64nduq",
         "author_flair_css_class":null
      
   ]




dynamic obj = JsonConvert.DeserializeObject<dynamic>(source);
             var mods = obj["data"]["children"].Children();
             foreach (var mod in mods)
             
                 string modss = obj["data"]["children"][mods]["name"].ToString();
                 Console.WriteLine(modss);
             

【问题讨论】:

您应该提供您遇到的错误以及堆栈跟踪。更好的是,通过调试器运行它并单步执行每一行。这应该可以明确问题。 您拍的 json 缺少以 '' 开头,否则无效。 【参考方案1】:

您已经有一个“mod”作为对象。您需要做的就是访问“mod”的“name”属性。

dynamic obj = JsonConvert.DeserializeObject<dynamic>(source);
             var mods = obj["data"]["children"].Children();
             foreach (var mod in mods)
             
                 string modss = mod["name"].ToString();
                 Console.WriteLine(modss);
             

注意:您在问题中粘贴的 json 缺少开头的“”,没有它是无效的。

【讨论】:

以上是关于使用 NewtonSoft Json 在 C# 中获取 JSON 的所有子项的主要内容,如果未能解决你的问题,请参考以下文章

C#中使用Newtonsoft.Json序列化和反序列化自定义类对象

如何使用 C# 进行条件序列化 - NewtonSoft.Json

C# 使用 Newtonsoft 解析 JSON

C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json

C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json

C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json