gpt4 book ai didi

c# - NewtonSoft Json 使用括号方法检索数据

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:48 25 4
gpt4 key购买 nike

目前我正在使用 YouTube API 获取一些数据。数据在 json 中,我正在尝试获取其中的一部分。

我现在面临的问题是,我想使用下面的方法:

WebClient client = new WebClient();

string jsonData = client.DownloadString("https://www.googleapis.com/youtube/v3/videos?id=" + videoId + "&part=contentDetails&key=");

var results = JsonConvert.DeserializeObject(jsonData);

string duration = results["items"]["contentDetails"]["duration"];

目前这会导致错误:

Cannot apply indexing with [] to an expression of type 'object'

我现在面临的问题是我不知道如何正确反序列化对象,以便我可以使用文本索引来获取数据。我以前曾经这样做过,但我不记得了,也找不到关于我的方法的任何信息。

最佳答案

您应该做的是定义一个类,其中包含与您的 JSON 匹配的所有属性,然后将该类作为类型参数传递给反序列化:

Results results = JsonConvert.DeserializeObject<Results>(jsonData);

我没有关于您的 JSON 的更多信息,但快速定义如下所示:

public class Results
{
public Items items { get; set; }
}

public class Items
{
public ContentDetails contentDetails { get; set; }
}

public class ContentDetails
{
public string duration { get; set; }
}

如果您需要帮助将 JSON 响应转换为 C# 类,您可以使用转换器,例如 http://json2csharp.com/


您还可以反序列化为动态类型,如下所示:

var results = JsonConvert.DeserializeObject<dynamic>(jsonData);

然后,您只需访问您的属性:

string duration = results.items.contentDetails.duration;

但是,大多数时候不推荐使用dynamic,因为它有效地消除了静态类型,因此您必须确保duration将是一个字符串,否则当您尝试访问它时会抛出运行时异常。

关于c# - NewtonSoft Json 使用括号方法检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com