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

解析Vimeo API嵌套JSON:筛选直播状态对象问题求助

问题描述

我搭建了一个fiddle(内含简化后的JSON响应),需要遍历该JSON,筛选出metadata.connections.live_video.status为'streaming'的对象。目前无法访问目标属性及对应值,甚至多次循环时用console.log统计实例数量也失败。最终需求是:当对象的metadata.connections.live_video.status等于'streaming'时,把整个对象取出并存储为const,方便访问其未在示例中展示的其他属性。

当前使用的代码:

$.each(json.body.data, function(key , value){ // First Level
    $.each(value.metadata.connections, function(ky , vl ){  // The contents inside data
     console.log(ky);
   });    
});
解决方法

方案一:原生JS filter 方法(推荐)

直接用数组的filter方法筛选,代码更简洁高效:

// 筛选所有符合条件的对象,存入数组
const streamingObjects = json.body.data.filter(item => 
  item?.metadata?.connections?.live_video?.status === 'streaming'
);

// 若只需第一个符合条件的对象
const firstStreamingObj = streamingObjects[0];

方案二:jQuery $.each 适配版

如果习惯用jQuery遍历,调整代码如下:

const streamingObjects = [];
$.each(json.body.data, function(key, item) {
  // 逐层判断属性是否存在,避免未定义报错
  if (item.metadata 
      && item.metadata.connections 
      && item.metadata.connections.live_video 
      && item.metadata.connections.live_video.status === 'streaming') {
    streamingObjects.push(item);
  }
});

注意事项

  • 可选链操作符?.能简化层级属性的存在性判断,需ES2020及以上环境支持;若要兼容旧环境,用&&逐层校验属性是否存在即可。
  • 筛选后的streamingObjects是符合条件的对象数组,直接从中提取对象就能访问其所有属性。

内容的提问来源于stack exchange,提问作者Dirty Bird Design

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:45:31