node-red完成一个从 JSON 中解析出某个属性,并存入流程局部变量,可供同一流程调用的实例。
时间: 2024-12-12 15:27:40 浏览: 16
在Node-RED中,你可以使用内置的`function`节点来完成这个任务。首先,你需要将JSON数据作为输入,可能是从HTTP请求、文件系统或者其他数据源获取的。下面是步骤:
1. **创建`function`节点**:打开Node-RED编辑界面,点击"函数"类别,然后拖拽一个新的`function`节点到画布上。
2. **配置函数**:双击`function`节点,在弹出的编辑窗口中,选择`payload`作为输入,并设置`output`为`msg.payload`。这是因为在Node-RED中,消息(`msg`)通常包含你的输入数据,而`payload`就是消息的内容。
3. **编写JavaScript代码**:在右侧的代码编辑区域,添加以下代码片段,用于解析JSON并提取特定属性:
```javascript
function(msg, send) {
const jsonData = msg.payload;
let desiredProperty;
// 指定你要提取的属性名,假设是 "name"
if (jsonData && typeof jsonData === 'object') {
desiredProperty = jsonData['yourDesiredProperty'];
}
// 如果找到该属性,将其赋值给msg.flowVar,这是一个流程级别的变量
if (desiredProperty !== undefined) {
msg.flowVar = desiredProperty;
} else {
console.log('Property not found in JSON.');
}
send(msg);
}
```
4. **保存并测试**:记得保存你的修改,然后在`function`节点的输入处放置一个`json`或`http-in`之类的节点,提供你的JSON数据。当你运行此流程,Node-RED会提取指定属性并将结果存储在`flowVar`中,后续流程可以访问这个变量。
5. **在其他节点中使用`flowVar`**:为了在同一流程的其他节点中使用这个属性,只需在需要的地方使用`${msg.flowVar}`即可。
阅读全文