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

如何用Jsonata将首行字段映射到后续行生成目标JSON结构?

用Jsonata实现CSV转结构化JSON的字段映射

问题背景

处理CSV转换后的JSON数据,首行存储字段名(Value字段),需要将后续每行的Value值对应到首行的字段名,生成键值对结构的JSON数组。

输入JSON

[
    [
        {
            "LineNbr" : 1,
            "Value" : "Desc1"
        },
        {
            "LineNbr" : 1,
            "Value" : "Desc2"
        }
    ],
    [
        {
            "LineNbr" : 2,
            "Value" : "Value1"
        },
        {
            "LineNbr" : 2,
            "Value" : "Value2"
        }
    ],
    [
        {
            "LineNbr" : 3,
            "Value" : "Value3"
        },
        {
            "LineNbr" : 3,
            "Value" : "Value4"
        }
    ],
    [
        {
            "LineNbr" : 4,
            "Value" : "Value5"
        },
        {
            "LineNbr" : 4,
            "Value" : "Value6"
        }
    ],
    [
        {
            "LineNbr" : 5,
            "Value" : "Value7"
        },
        {
            "LineNbr" : 5,
            "Value" : "Value8"
        }   
    ]
]

期望输出

[
    {
        "Desc1" : "Value1",
        "Desc2" : "Value2"
    },
    {
        "Desc1" : "Value3",
        "Desc2" : "Value4"  
    },
    {
        "Desc1" : "Value5",
        "Desc2" : "Value6"  
    },
    {
        "Desc1" : "Value7",
        "Desc2" : "Value8"  
    }
]

尝试的代码

(
    $data := $map($, function($v, $i, $a) {
        {

            "rowdata": $map([1..$count($v)], function($vs, $is) {$[0][$is].Value})
        }
    });
)

该代码能获取到映射值,但结构不符合预期。

解决方案

使用以下Jsonata表达式可以直接生成目标结构:

(
    $headers := $[0].Value;
    $map($[1 to $count($)-1], function($row) {
        $zip($headers, $row.Value) ~> $merge
    })
)

代码解释

  1. 提取表头:$headers := $[0].Value 获取首行所有Value值作为字段名数组,即["Desc1", "Desc2"]。
  2. 遍历数据行:$map($[1 to $count($)-1], ...) 从第二行开始遍历所有数据行。
  3. 生成键值对对象:
    • $zip($headers, $row.Value) 将表头数组和当前行的Value数组配对,生成类似[["Desc1", "Value1"], ["Desc2", "Value2"]]的二维数组。
    • ~> $merge 将二维数组转换为键值对对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:42:34