使用jq将对象转换为排序数组

问题描述 投票:0回答:1

我有以下 JSON 对象。

{
  "1eba648810a9": {
    "ID": "1eba648810a9",
    "Tag": "1.0.237"
  },
  "2df272728204": {
    "ID": "2df272728204",
    "Tag": "1.0.243"
  },
  "2f5a63db6634": {
    "ID": "2f5a63db6634",
    "Tag": "1.0.179"
  },
  "91a86fec59b1": {
    "ID": "91a86fec59b1",
    "Tag": "1.0.202"
  },
  "9aa95de44891": {
    "ID": "9aa95de44891",
    "Tag": "1.0.189"
  },
  "a1caaccdba45": {
    "ID": "a1caaccdba45",
    "Tag": "1.0.183"
  },
  "a35ad9d93e62": {
    "ID": "a35ad9d93e62",
    "Tag": "1.0.42"
  },
  "a4e57f2db7eb": {
    "ID": "a4e57f2db7eb",
    "Tag": "1.0.181"
  },
  "d0254d6406e0": {
    "ID": "d0254d6406e0",
    "Tag": "1.0.253"
  },
  "ddeeb3d41a4c": {
    "ID": "ddeeb3d41a4c",
    "Tag": "1.0.177"
  },
  "f92356a49d78": {
    "ID": "f92356a49d78",
    "Tag": "1.0.178"
  }
}

如何将其转换为数组并按

Tag
排序。最后我想要这样的东西。

[
  {
    "ID": "ddeeb3d41a4c",
    "Tag": "1.0.177"
  },
  {
    "ID": "f92356a49d78",
    "Tag": "1.0.178"
  },
  {
    "ID": "2f5a63db6634",
    "Tag": "1.0.179"
  },
  {
    "ID": "a4e57f2db7eb",
    "Tag": "1.0.181"
  },
  {
    "ID": "a1caaccdba45",
    "Tag": "1.0.183"
  },
  {
    "ID": "9aa95de44891",
    "Tag": "1.0.189"
  },
  {
    "ID": "91a86fec59b1",
    "Tag": "1.0.202"
  },
  {
    "ID": "1eba648810a9",
    "Tag": "1.0.237"
  },
  {
    "ID": "2df272728204",
    "Tag": "1.0.243"
  },
  {
    "ID": "d0254d6406e0",
    "Tag": "1.0.253"
  },
  {
    "ID": "a35ad9d93e62",
    "Tag": "1.0.42"
  }
]

请注意,按版本排序并不完全正确,但这是一个单独的问题。理想情况下,我想要一个仅使用

jq
而不是其他外部工具的解决方案。

以下问题已被建议为重复问题,但它不相关,因为这是对数组而不是对象进行排序。

jq
1个回答
0
投票

您可以使用 to_entriesmap

将对象转换为数组
echo "$your_object" | jq 'to_entries | map(.value)'

然后可以进行排序。

© www.soinside.com 2019 - 2024. All rights reserved.