将对象列表转换为数组

Converting a list of objects to an array

假设我有一个对象列表:

{
  "alpha": {
    "bytes": {
      "value": 4789440
    },
    "doc_count": 7723
  },
  "beta": {
    "bytes": {
      "value": 4416862639
      },
    "doc_count": 1296
  }
}

有没有办法使用 jq 来得到这个的数组表示,例如:

  [
    {
      "key": "alpha",
      "bytes": {
        "value": 4789440
      },
      "doc_count": 7723
    },
    {
      "key": "beta",
      "bytes": {
        "value": 4416862639
      },
      "doc_count": 1296
    }
  ]

使用 to_entries 是一种方法。通过访问 .key.value,组合将是:

jq '[to_entries[] | {key} + .value]' input.json
[
  {
    "key": "alpha",
    "bytes": {
      "value": 4789440
    },
    "doc_count": 7723
  },
  {
    "key": "beta",
    "bytes": {
      "value": 4416862639
    },
    "doc_count": 1296
  }
]

Demo

[ keys_unsorted[] as $key | { $key } + .[$key] ]

Demo 在 jqplay

to_entries | map( { key } + .value )

Demo 在 jqplay