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

从对象获取数据时出现异常,请求排查问题

Node-RED Function节点读取带点JSON属性报错排查

你提供的校验有效的JSON数据如下:

{
    "battery.level": 60,
    "channel.id": 1213793,
    "ident": "xx",
    "message.type": "V1",
    "peer": "xx",
    "position.direction": 0,
    "position.latitude": 1.3xx,
    "position.longitude": 1.3xx,
    "position.speed": 25
}

在Function节点读取这些属性时出错,大概率是JavaScript语法特性导致的操作失误,以下是具体排查和修正方案:

核心错误点及修正

带点的属性名不能直接用.运算符访问:

  • 错误写法示例:

    // 会抛出"Cannot read properties of undefined"错误
    let level = msg.payload.battery.level;
    

    原因:JavaScript会把battery解析成msg.payload下的子对象,再尝试读取它的level属性,但你的JSON里根本没有battery子对象,只有"battery.level"这个完整键名。

  • 正确写法示例:

    // 用方括号[]访问带特殊字符的属性名
    let batteryLevel = msg.payload["battery.level"];
    let channelId = msg.payload["channel.id"];
    let messageType = msg.payload["message.type"];
    
    // 后续处理逻辑示例
    msg.payload = {
      电池电量: batteryLevel,
      频道ID: channelId,
      消息类型: messageType
    };
    return msg;
    

其他排查方向

  • 确认JSON数据位置:如果原始输入是JSON字符串,需要先通过JSON.parse(msg.payload)转换成对象后再读取属性。
  • 检查拼写一致性:确保代码中写的键名和JSON里的完全匹配,比如不要把"position.speed"写成"position.speeds"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:42:45