【问题标题】:How can I duplicate multiple times an existing object within a JSON array using jq?如何使用 jq 在 JSON 数组中多次复制现有对象?
【发布时间】:2020-04-30 10:00:48
【问题描述】:

我有以下 json 文件:

{
  "actions": [
    {
      "values": "test",
      "features": [
        {
          "v1": 100,
          "v2": {
            "dates": [
              "2020-04-08 06:58:26",
              "2020-04-08 06:58:26"
            ]
          }
        }
      ]
    }
  ]
}

我想将“actions”数组中的对象附加 n 次到它的末尾,总共创建 n+1 个对象。

如果 n=2 时的预期输出:

{
  "actions": [
    {
      "values": "test",
      "features": [
        {
          "v1": 100,
          "v2": {
            "dates": [
              "2020-04-08 06:58:26",
              "2020-04-08 06:58:26"
            ]
          }
        }
      ]
    },
    {
      "values": "test",
      "features": [
        {
          "v1": 100,
          "v2": {
            "dates": [
              "2020-04-08 06:58:26",
              "2020-04-08 06:58:26"
            ]
          }
        }
      ]
    },
    {
      "values": "test",
      "features": [
        {
          "v1": 100,
          "v2": {
            "dates": [
              "2020-04-08 06:58:26",
              "2020-04-08 06:58:26"
            ]
          }
        }
      ]
    }
  ]
}

我找到了这个答案 [How can I duplicate an existing object within a JSON array using jq? 但是它只适用于最后一个元素。

【问题讨论】:

    标签: jq


    【解决方案1】:

    您可以将reduce() 函数与range() 一起使用来创建包含对象的索引。

    jq --arg n 2 'reduce range(0, ($n|tonumber)) as $d (.; .actions[$d+1] += .actions[0] )' json
    

    【讨论】:

    猜你喜欢
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    相关资源
    最近更新 更多