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

如何用JSONata或JSONPath合并JSON中独立的列与行数组?

使用JSONata合并JSON中的列与行数据

问题描述

我想使用JSONata或JSONPath,把同一个JSON文件里Columns数组的列数据和Rows数组的行数据合并起来,应该要嵌套遍历每行和每列,请问这俩工具能实现吗?

输入JSON

{
  "Columns": [
    {
      "ColumnName": "Name",
      "ColumnType": "string"
    },
    {
      "ColumnName": "Id",
      "ColumnType": "int"
    }
  ],
  "Rows": [
    ["Alice", 1],
    ["Bob", 2],
    ["Carl", 3]
  ]
}

期望输出

{
  "combinedData": [
    {
      "Name": "Alice",
      "Id": 1
    },
    {
      "Name": "Bob",
      "Id": 2
    },
    {
      "Name": "Carl",
      "Id": 3
    }
  ]
}

解决方案

工具选择说明

JSONPath仅能完成JSON数据的查询与提取,无法生成新的结构化JSON对象;而JSONata是专为JSON数据转换设计的工具,完全可以实现这类合并需求。

JSONata实现表达式

{
  "combinedData": Rows.(
    $cols := Columns;
    $reduce($cols, function($acc, $col, $index) {
      $acc & { $col.ColumnName: $[$index] }
    }, {})
  )
}

表达式解析

  • 遍历Rows数组中的每一行元素
  • 用$cols变量缓存Columns数组,减少重复查询开销
  • 通过$reduce方法遍历Columns,以列的ColumnName为键,对应行的索引值为值,逐步构建键值对对象
  • 最终将所有行构建的对象汇总到combinedData数组中

内容的提问来源于stack exchange,提问作者Daniel Fynes-Clinton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:07:23