鉴于文件中的 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
但没有任何喜悦。
使用对象更容易(更快):
jq --argjson order '{"dog":0, "bird":1, "cat":2}' \
'. | sort_by($order[.entityType])'