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

如何使用jq合并同一JSON文件内的对象与数组生成mailing_address数组

jq实现公共字段批量合并到数组所有元素方案

首先需要先修正原始JSON的语法问题:你提供的示例中所有字符串类型值(比如New York、123 Main Street)缺失包裹的双引号,补全后才是可被jq正常解析的合法JSON,修正后的原始JSON结构参考:

{
  "Cities": {
    "city": "New York",
    "zip_code": "10034",
    "state": "NY"
  },
  "addresss": [
    {
      "address_line1": "123 Main Street",
      "address_line2": "Unit 130"
    },
    {
      "address_line1": "5th Avenue",
      "address_line2": "East River Tower"
    }
  ]
}

执行命令

直接运行以下jq命令即可输出你需要的结构:

jq '{mailing_address: [.addresss[] + .Cities]}' 你的JSON文件路径

逻辑说明

  • .addresss[] 会遍历地址数组下的每一个独立对象
  • 遍历过程中对每个地址对象,通过+运算符和根节点的.Cities对象做键值对合并:jq中两个对象做+运算时,会将后者的所有字段追加到前者对象中
  • 所有元素合并完成后包裹为数组,赋值给mailing_address字段即可匹配预期输出

输出效果

命令执行后返回的结果和你要求的结构完全一致:

{
  "mailing_address": [
    {
      "address_line1": "123 Main Street",
      "address_line2": "Unit 130",
      "city": "New York",
      "zip_code": "10034",
      "state": "NY"
    },
    {
      "address_line1": "5th Avenue",
      "address_line2": "East River Tower",
      "city": "New York",
      "zip_code": "10034",
      "state": "NY"
    }
  ]
}

之前尝试的方法仅给第一个元素追加字段,是因为直接对数组整体和Cities对象做了合并操作,没有先遍历数组内每个元素单独执行合并逻辑,才会出现字段只追加一次的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:45:37