【问题标题】:How can i insert object which got arrays into arrays using jq?如何使用 jq 将获取数组的对象插入到数组中?
【发布时间】:2020-08-27 09:30:02
【问题描述】:

我可能没有正确描述它,我尝试了很多次并在 jq Manaual 上查找了手册,我不知道如何通过 jq 命令将包含数组的对象插入到 json 文件中,无论如何,这是起源test.json:

[
  {
    "gate": [
      {
        "pro1": "1"
      }
    ],
    "home": [
      {
        "mem1": "1"
      }
    ],
    "holder": "1"
  }
]

我希望插入后是这样的:

[
  {
    "gate": [
      {
        "pro1": "1"
      }
    ],
    "home": [
      {
        "mem1": "1"
      }
    ],
    "holder": "1"
  },
  {
    "gate": [
      {
        "pro1": "2"
      }
    ],
    "home": [
      {
        "mem1": "2"
      }
    ],
    "holder": "1"
  }
]

可能是jq做的吗?

【问题讨论】:

  • "pro1": "2" 和`"mem1": "2" 来自哪里?它们是静态硬编码的,还是第一条(原始)记录的增量?

标签: json jq


【解决方案1】:

由于您没有提供更多详细信息,我假设您只是想将硬编码对象附加到现有数组。 (如果这不是你的意思,那么你的问题需要更精确。)

您可以使用+ 运算符将项目添加到列表的末尾。所以在你的情况下:

jq '.+[{"gate":[{"pro1": "2"}], "home":[{"mem1": "2"}],"holder": "1"}]' input.json
[
  {
    "gate": [
      {
        "pro1": "1"
      }
    ],
    "home": [
      {
        "mem1": "1"
      }
    ],
    "holder": "1"
  },
  {
    "gate": [
      {
        "pro1": "2"
      }
    ],
    "home": [
      {
        "mem1": "2"
      }
    ],
    "holder": "1"
  }
]

. 采用现有输入,即一个数组。 +[ {...} ] 将它与另一个包含一个对象的数组连接起来。如果您想将新项目放在开头而不是结尾,请将其交换:[ {...} ]+.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 2017-06-16
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多