如何使用JQ有效地对JSON对象进行排序

时间:2018-05-01 15:16:58

标签: json sorting key jq

我的格式为

的JSON
double

我需要按大小排序,例如:

{
  "a": {
    "size":3
  },
  "b": {
    "size":2
  },
  "c": {
    "size":1
  }
}

我找到了一种方法,例如:

{
  "c": {
    "size": 1
  },
  "b": {
    "size": 2
  },
  "a": {
    "size": 3
  }
}

但这看起来相当复杂,所以我希望有一种我忽略的简单方法?

1 个答案:

答案 0 :(得分:3)

您可以使用to_entries / from_entries,如下所示:

jq 'to_entries|sort_by(.value.size)|from_entries' file.json

to_entries会将您的输入对象转换为key / value对对象的列表:

[
  {
    "key": "a",
    "value": {
      "size": 3
    }
  },
  ...
  {
    "key": "c",
    "value": {
      "size": 1
    }
  }
]

这允许将sort_by(.value.size)应用于该列表,然后使用from_entries将其转换回对象。