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

如何让JavaScript输出为JSON格式并将值数据按列而非行展示

行转列格式的JSON转换方案

核心思路

将原有的行式数据(每个对象代表一条完整记录)转换为列式结构——每个字段对应一个数组,集中存储所有记录的该字段值。

适配Node-RED Function节点的代码实现

假设你的msg.payload存储的是行式对象数组,可直接在Function节点中使用以下代码完成转换:

// 获取输入的行式数据
const rowDataset = msg.payload;
// 初始化空的列式结构容器
const columnDataset = {};

// 遍历每条行记录
rowDataset.forEach(row => {
  // 遍历当前记录的所有字段
  Object.keys(row).forEach(field => {
    // 若字段未在容器中初始化,则创建对应数组
    if (!columnDataset[field]) {
      columnDataset[field] = [];
    }
    // 将当前记录的字段值追加到对应数组中
    columnDataset[field].push(row[field]);
  });
});

// 替换payload为转换后的列式JSON
msg.payload = columnDataset;
return msg;

效果对比

  • 原行式输出示例:
[
  {"sensorId": "temp_01", "reading": 22.5},
  {"sensorId": "temp_02", "reading": 24.1},
  {"sensorId": "temp_03", "reading": 23.3}
]
  • 转换后列式输出示例:
{
  "sensorId": ["temp_01", "temp_02", "temp_03"],
  "reading": [22.5, 24.1, 23.3]
}

补充说明

  • 如果存在字段缺失的记录,可通过columnDataset[field].push(row[field] ?? null)为缺失字段添加null占位符,保证数组长度一致
  • 若输入数据不是标准对象数组,需先添加数据校验逻辑(如判断Array.isArray(rowDataset)),避免转换报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:43:11