【问题标题】:Pass array index into children entries with jq使用 jq 将数组索引传递给子条目
【发布时间】:2021-12-13 23:02:44
【问题描述】:

如果您认为这篇文章的标题不对,我也是。我很乐意重新表述,但很难解释。

鉴于此:

[
  {
    "A": "a",
    "B": "b",
    "C": "c"
  },
  {
    "D": "d",
    "E": "e"
  }
]

我想要这个:

[
 { index: 0, key: "A", value: "a" },
 { index: 0, key: "B", value: "b" },
 { index: 0, key: "C", value: "c" },
 { index: 1, key: "D", value: "d" },
 { index: 1, key: "E", value: "e" }
]

现在不管它到底是一个数组还是别的什么,都无所谓了。 我真正要寻找的是将输入数组中的那些元素转换为键值对,然后添加数组中该元素的索引。 所以数组中的第一个对象是“index: 0”,第二个是“index: 1”,以此类推

我可以从数组中获取索引就好了:

jq 'to_entries | .[]' sample.json 

这给了我:

{
  "key": 0,
  "value": {
    "A": "a",
    "B": "b",
    "C": "c"
  }
}
{
  "key": 1,
  "value": {
    "D": "d",
    "E": "e"
  }
}

我也可以得到键值对:

jq 'to_entries | .[] | .value | to_entries' sample.json 

这给了我:

[
  {
    "key": "A",
    "value": "a"
  },
  {
    "key": "B",
    "value": "b"
  },
  {
    "key": "C",
    "value": "c"
  }
]
[
  {
    "key": "D",
    "value": "d"
  },
  {
    "key": "E",
    "value": "e"
  }
]

但我不知道如何将两者结合起来。

【问题讨论】:

    标签: jq


    【解决方案1】:

    这给出了预期的结果:

    jq 'to_entries|map({index:.key}+(.value|to_entries[]))' sample.json
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-31
      • 2013-01-27
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      相关资源
      最近更新 更多