我可以访问
mqttData = msg.payload.Sum.Thin;
。
我希望 Sum.Thin 是可变的(也可以是其他东西,比如 Data.Count)。
此变量('payloadConfig')从 txt 文件中作为字符串读取。
我尝试过各种“伎俩”:
// var payloadConfigObj = { payloadConfig };
// var payloadConfigObj = new String(payloadConfig);
var payloadConfigObj = JSON.stringify(payloadConfig);
node.warn('payloadConfigObj: ' + JSON.stringify(payloadConfigObj) + ', type: ' + typeof (payloadConfigObj));
// var jsonStr = payloadConfig.replace(/(\w+:)|(\w+ :)/g, function (matchedStr) {
// return '"' + matchedStr.substring(0, matchedStr.length - 1) + '":';
// });
// payloadConfig = JSON.parse(jsonStr); //converts to a regular object
// object payloadConfigObj = payloadConfig;
// var payloadConfigObj = eval('({' + payloadConfig + '})');
// var payloadConfigObj = Object.fromEntries(payloadConfig.split(',').map(i => i.split(':')));
// const payloadConfigObj = payloadConfig.split('').map(letter => ({ letter: letter }));
// var payloadConfigObj = JSON.parse(payloadConfig); BROKE!
// var payloadConfigObj = {};
// mqttData = mqttPayload.payloadConfig;
// mqttData = mqttPayload[payloadConfig];
// mqttData = mqttPayload[{payloadConfig}];
// mqttData = mqttPayload.indexOf(payloadConfig);
// mqttData = mqttPayload['payloadConfig'];
// mqttData = mqttPayload["payloadConfig"];
// mqttData = mqttPayload.payloadConfigObj;
// mqttData = mqttPayload[payloadConfigObj];
// mqttData = mqttPayload['payloadConfigObj'];
mqttData = mqttPayload["payloadConfigObj"];
您需要将
payloadConfig
拆分为 .
,并为每个部分使用方括号表示法。
例如
msg.payload["data"]["count"]
有一个辅助函数可以为您完成此操作
RED.util.getObjectProperty()
mqttData = RED.util.getObjectProperty(mqttPayload, payloadConfig)