You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP(C#)中Newtonsoft解析YouTube统计JSON返回null求助

解决Newtonsoft.Json解析YouTube统计数据返回null的问题

嘿,我之前做YouTube API相关开发时也踩过类似的坑,给你几个实用的排查方向和解决思路:

  • 确认JSON结构与类定义的层级匹配
    Json2CSharp生成的类经常会忽略JSON的嵌套层级,比如YouTube的统计数据其实是包裹在items数组里的,如果你直接解析最内层的Statistics类,肯定会返回null。你得检查生成的类是否包含正确的根节点——比如应该有一个带List<Item>属性的根类,Item类里再包含Statistics对象。

  • 检查字段名的映射是否正确
    YouTube API返回的JSON是驼峰命名(比如viewCount),而C#类默认是Pascal命名(比如ViewCount)。如果你的类属性没加[JsonProperty("viewCount")]特性,Newtonsoft会因为字段名不匹配无法赋值,最终返回null。

  • 验证JSON字符串的有效性
    先把拿到的JSON字符串复制到格式化工具里检查,看看有没有截断、转义错误,或者API返回的是错误信息(比如密钥无效、参数错误的JSON)。如果JSON本身有问题,解析自然会失败。

  • 用动态对象快速定位问题
    可以先不用强类型类,用动态对象解析来查看真实结构:

    dynamic result = JsonConvert.DeserializeObject(jsonString);
    // 在调试器里查看result.items[0].statistics是否存在有效值
    

    这样能快速定位哪个层级出问题,再调整类结构。

修正后的示例代码

假设YouTube返回的JSON结构是:

{
  "kind": "youtube#videoListResponse",
  "items": [
    {
      "id": "你的视频ID",
      "statistics": {
        "viewCount": "123456",
        "likeCount": "7890"
      }
    }
  ]
}

对应的正确C#类(注意JsonProperty特性的使用):

public class VideoStatsRoot
{
    public List<VideoItem> items { get; set; }
}

public class VideoItem
{
    public Statistics statistics { get; set; }
}

public class Statistics
{
    [JsonProperty("viewCount")]
    public string ViewCount { get; set; }
    
    [JsonProperty("likeCount")]
    public string LikeCount { get; set; }
}

解析代码:

var root = JsonConvert.DeserializeObject<VideoStatsRoot>(jsonString);
var videoStats = root.items[0].statistics;

内容的提问来源于stack exchange,提问作者user3733885

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:50:57