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

如何正确编解码Sparkplug B的PropertySet类型Payload?

解决sparkplug-payload解码PropertySet类型Payload的报错问题

你的问题出在同时给PropertySet类型的metric设置了properties和value字段,这不符合sparkplug-payload库对PropertySet类型的处理逻辑,导致解码时无法正确识别结构,抛出Cannot read properties of undefined (reading 'keys')错误。

错误原因

对于PropertySet类型的metric,你只需要通过value字段定义其内部的属性集合即可,properties字段是用来给metric本身添加元数据(比如描述、单位等)的,不是用来定义PropertySet的内容结构的。同时设置两个字段会干扰库的解码逻辑,导致内部处理时获取不到预期的对象。

修正后的代码

const sparkplug = require("sparkplug-payload").get("spBv1.0");
const payload = {
    metrics: [
        {
            name: "exampleMetric",
            type: "PropertySet",
            // 移除多余的properties字段
            value: {
                "bla": { type: "Boolean", value: true },
                "foo": { type: "String", value: "hello" }
            }
        }
    ]
};

const encodedPayload = sparkplug.encodePayload(payload);

console.log("Encoded Payload:", encodedPayload);
console.log("Decoded Payload:", sparkplug.decodePayload(encodedPayload));

验证结果

修正后编码和解码都能正常运行,解码后的payload会正确还原你定义的PropertySet结构,不会再抛出类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:55:05