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

如何使用JSONata将列名与对应值组合成键值对数组?

JSON结构转换:列别名映射行数据

原始输入

{
  "totalRows": 10,
  "columns": [
    {
      "alias": "Active",
      "id": "[COLUMN_ACTIVE]"
    },
    {
      "alias": "Area",
      "id": "[COLUMN_AREA]"
    }
  ],
  "rows": [
    {
      "columnValues": [
        false,
        "A"
      ]
    },
    {
      "columnValues": [
        false,
        "B"
      ]
    },
    {
      "columnValues": [
        true,
        "C"
      ]
    }
  ]
}

期望输出

[
 {
  "Active": false,
  "Area": "A"
 },
 {
  "Active": false,
  "Area": "B"
 },
 {
  "Active": true,
  "Area": "C"
 }
]

解决方案

JavaScript 实现

先提取列别名列表,再遍历每行数据,将索引对应的别名作为键、对应值作为属性值,组装成目标对象:

const inputData = {
  "totalRows": 10,
  "columns": [
    {"alias": "Active", "id": "[COLUMN_ACTIVE]"},
    {"alias": "Area", "id": "[COLUMN_AREA]"}
  ],
  "rows": [
    {"columnValues": [false, "A"]},
    {"columnValues": [false, "B"]},
    {"columnValues": [true, "C"]}
  ]
};

// 获取列别名数组
const columnAliases = inputData.columns.map(col => col.alias);

// 转换行数据
const result = inputData.rows.map(row => {
  const rowObj = {};
  row.columnValues.forEach((value, index) => {
    rowObj[columnAliases[index]] = value;
  });
  return rowObj;
});

console.log(JSON.stringify(result, null, 2));

Python 实现

通过列表推导式提取列别名,再遍历每行数据完成键值映射:

import json

input_data = {
  "totalRows": 10,
  "columns": [
    {"alias": "Active", "id": "[COLUMN_ACTIVE]"},
    {"alias": "Area", "id": "[COLUMN_AREA]"}
  ],
  "rows": [
    {"columnValues": [False, "A"]},
    {"columnValues": [False, "B"]},
    {"columnValues": [True, "C"]}
  ]
}

# 提取列别名
column_aliases = [col["alias"] for col in input_data["columns"]]

# 转换数据结构
result = []
for row in input_data["rows"]:
    row_obj = {}
    for idx, value in enumerate(row["columnValues"]):
        row_obj[column_aliases[idx]] = value
    result.append(row_obj)

print(json.dumps(result, indent=2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:57:26