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

iOS中如何从YouTube搜索API的JSON提取videoId并加载视频

解决YouTube搜索JSON提取videoId的问题

首先,先确认你解析后的JSON数据结构是否符合预期。你可以从打印的日志里摘出items部分,重点检查:

  • items是否为非空数组
  • 第一个items元素下的id字典里是否存在videoId键(注意键名大小写,YouTube API返回为驼峰式videoId,需确保拼写无误)

如果结构没问题,以下是两种可靠的提取方案:

方式一:逐层安全取值(推荐,避免空指针崩溃)

// 假设已将JSON数据解析为NSDictionary *responseDict
NSArray *items = responseDict[@"items"];
if (items.count > 0) {
    NSDictionary *firstItem = items[0];
    NSDictionary *idDict = firstItem[@"id"];
    // 先确认当前结果是视频类型,避免频道/播放列表等无videoId的情况
    if ([idDict[@"kind"] isEqualToString:@"youtube#video"]) {
        NSString *videoId = idDict[@"videoId"];
        if (videoId) {
            [self.playerView loadWithVideoId:videoId];
        } else {
            NSLog(@"未找到有效videoId");
        }
    } else {
        NSLog(@"当前结果非视频类型,无videoId");
    }
} else {
    NSLog(@"搜索结果为空");
}

方式二:修正valueForKeyPath的使用

若坚持使用valueForKeyPath,需确保解析后的responseDict是NSDictionary类型,且层级完全匹配。同时要提前判断结果有效性:

NSString *videoId = [responseDict valueForKeyPath:@"items.0.id.videoId"];
if (videoId) {
    [self.playerView loadWithVideoId:videoId];
} else {
    NSLog(@"提取videoId失败,请检查JSON结构或搜索结果类型");
}

常见排查点

  • 检查JSON解析代码:确保用NSJSONSerialization JSONObjectWithData:options:error:解析后得到的是NSDictionary(YouTube搜索API的根节点为字典,而非数组)
  • 核对结果类型:部分搜索结果可能是频道、播放列表,这类结果的id下只有channelId或playlistId,只有kind为youtube#video的结果才包含videoId

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:35:18