首页 > 解决方案 > C#如何在不知道长度的情况下读取某些属性

问题描述

我对 nuget api 进行了 GET 以获取有关包的某些数据(在我的情况下为 stylecop)。该调用有效,结果我成功获得了一个 json。但是 json 结构复杂,我需要读出所有项目。

这是我做的api调用,它有效。这应该向您显示 json 我试图从以下位置获取数据: https ://api.nuget.org/v3/registration3/stylecop.analyzers/index.json

红色区域包含我要读取的项目对象。它总共有43个项目。这些项目中的每一个都有一个 commitId 属性。我想从每个项目中读出所有 43 个 commitId 属性以将它们存储在列表中。

json截图 https://imgur.com/a/kNGytom

dynamic dynJson = JsonConvert.DeserializeObject(x);
   foreach (var item in dynJson)
                    {
                        Console.WriteLine(item.commitid);
                    }

这是我尝试过的,但我不知道如何访问第二层项目

标签: c#jsonserialization

解决方案


我看到 JSON 应该很容易创建可以反序列化的 C# 类。您可以使用 jsonutils.com 之类的工具从示例 JSON 字符串生成 C# 模型,并可能对其进行调整以更好地类似于您的 JSON 结构。

然后您可以使用以下命令将其反序列化为 C# 对象:

var yourObject = JsonConvert.DeserializeObject<YourJsonModel>(jsonString);

并通过 C# 对象中的对象数组/列表访问您想要的任何级别。


推荐阅读