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

使用jq对两个JSON文件做左连接、按键值匹配合并字段的方法

解决方案

直接使用以下兼容jq-1.5-1-a5b5cbe版本的命令即可实现需求:

jq --slurpfile input2 input2.json '
  ($input2[0] | map({key: .joinId, value: .}) | from_entries) as $lookup
  | map(. + ($lookup[.join_id] // {}))
' input1.json

逻辑说明

  • 命令通过--slurpfile参数读取第二个JSON文件,存入$input2变量,由于slurp模式会将文件内容包裹为数组,因此取$input2[0]得到第二个文件的原始记录数组
  • 先将第二个文件的记录转换为以joinId为键的查找字典,查找效率为O(1),大文件场景下也能快速运行
  • 遍历第一个文件的所有记录,用当前记录的join_id字段值匹配查找字典中的对应项:
    • 匹配成功则将第二个文件的对应字段合并到当前记录
    • 匹配失败则用空对象参与合并,不会给无匹配的记录追加多余字段,和示例期望输出完全一致

可选调整

如果你希望无匹配项的记录也固定带上joinId、joinField1、joinField2三个字段(值为null),可以把命令里的// {}替换为// {joinId: null, joinField1: null, joinField2: null}即可。

用你提供的两份示例文件运行上述命令,输出结果和你给出的期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:36:18