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

如何正确读取Philips Hue接口返回的对象数据

问题原因
  • axios 请求返回的完整响应对象包含状态码、状态文本、响应头、响应体等多个字段,你需要的飞利浦 Hue 设备数据实际存储在 lightResp.data 属性中,直接对整个 lightResp 取 Object.values 会把状态码等无关内容也纳入处理范围
  • JavaScript 中直接将对象与字符串拼接时,会自动调用对象的 toString() 方法,因此会输出 [object Object] 占位,无法展示对象实际内容
  • 补充小优化:fs.readFileSync 是同步读写 API,不需要搭配 await 使用
修正代码
var fs = require('fs');
var axios = require('axios');

var token = fs.readFileSync("../hue_token.txt").toString();
token = token.replace(/(\r\n|\n|\r)/gm, "");
var lightResp = await axios.get(`http://192.168.1.58/api/${token}/lights`);
// 取响应体中的设备数据
var lightList = lightResp.data;
// 转成带缩进的JSON字符串打印,方便查看完整结构
this.logger.info("Here is the lightResp:\n" + JSON.stringify(lightList, null, 2));
设备遍历示例

如果你需要逐个处理每台设备,可以用以下写法:

// 遍历所有设备的ID和详情
for (const [lightId, lightDetail] of Object.entries(lightList)) {
  console.log(`设备ID:${lightId}`);
  console.log(`设备名称:${lightDetail.name}`);
  console.log(`设备开关状态:${lightDetail.state.on}`);
  // 可按需读取lightDetail下的state、capabilities、config等任意字段
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:00:05