【问题标题】:Extract data from Json with json.net使用 json.net 从 Json 中提取数据
【发布时间】:2020-05-04 13:30:10
【问题描述】:

所以我有一个 JSON 文本,我需要从中提取一些字段的值

{"data":{"shortcode":{"id":"id123","shortcode":"alpha1","by":{"page_info":{"has_next_page":true,"cursor":"sometext=="},"edges":[{"node":{"id":"id1234","username":"admin123","full_name":"admin name",}},{"node":{"id":"id4321","username":"user123","full_name":"user ",}}]}}},"status":"ok"}

现在我需要每个“用户名”字段的值和其中的“光标”

我是这个主题的新手,感谢任何帮助

【问题讨论】:

标签: c# .net json winforms


【解决方案1】:

如果您的项目中尚未安装 Newtonsoft.Json,则可以将其安装为 Nuget 包。然后使用 JsonConvert.DeserializeObject() 方法将其解析为动态对象类型,您可以使用它访问其所有字段/属性。

代码看起来像这样-

添加对 Newtonsoft.Json 的引用

using Newtonsoft.Json;

DeserializeObject方法将字符串解析成动态类型(可以用动态代替var)

var obj = JsonConvert.DeserializeObject<dynamic>(text);

对于您的示例中提到的光标字段

Console.WriteLine(obj.data.shortcode.by.page_info.cursor);

迭代您的示例中提到的每个用户名

foreach (var edge in obj.data.shortcode.by.edges)
{
    Console.WriteLine(edge.node.id);
}

注意 - 因为您使用的是动态类型,所以您必须确保检查空值以避免任何“NullRefereneException”。

【讨论】:

    【解决方案2】:

    您可以创建一个与您的 json 结构匹配的新类,然后将 json 反序列化到该类中。

    【讨论】:

      猜你喜欢
      • 2012-01-30
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 2017-04-16
      相关资源
      最近更新 更多