使用 jq 按任意顺序对 JSON 数组进行排序

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

鉴于文件中的 JSON 数据

data.json

[
  { "id": 1, "entityType": "cat" },
  { "id": 2, "entityType": "dog" },
  { "id": 3, "entityType": "bird" },
  { "id": 4, "entityType": "cat" }
]

如何返回按非字母任意顺序排序的数组(例如狗、鸟,然后是猫)?

我尝试了各种排列:

jq --argjson order '["dog", "bird", "cat"]' '. | sort_by( index($order[], .entityType) )' data.json

但没有任何喜悦。

json jq
1个回答
0
投票

使用对象更容易(更快):

jq --argjson order '{"dog":0, "bird":1, "cat":2}' \
    '. | sort_by($order[.entityType])'
© www.soinside.com 2019 - 2024. All rights reserved.