You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jq将JSON对象转换为按Tag排序的数组

问题:将JSON对象转为数组并按Tag字段排序

原始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命令即可完成转换与排序:

jq '. | values | sort_by(.Tag)' input.json

命令解释:

  1. .:表示输入的整个JSON对象。
  2. values:提取对象中所有的值,将其转换为数组(这一步就把原始的键值对对象转为包含所有子对象的数组)。
  3. sort_by(.Tag):根据每个子对象的Tag字段进行字符串排序。

执行该命令后,输出结果即为期望的排序后数组。


内容的提问来源于stack exchange,提问作者Stephen Rasku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:09:53