jq 获取对象列表中给定键的所有唯一值
jq get all unique values for a given key in a list of objects
假设我有一个端点 returns 以下数组:
[
{"name": "Joe", "age": 21},
{"name": "Steve", "age": 27},
{"name": "Michelle", "age": 32},
{"name": "Joe", "age": 23},
]
我知道我可以使用以下命令(使用 httpie)获取所有名称:
http https://some-endpoint | jq '.[] | .name'
# output
Joe
Steve
Michelle
Joe
如何获得所有唯一的名称(因此没有重复的名称)?
假设输入有效 JSON,以下 jq 程序将生成一个包含不同名称的数组:
map(.name) | unique
如果输入有多余的逗号,如示例所示,您可能希望考虑使用预处理器,例如 any-json
或 hjson
.
假设我有一个端点 returns 以下数组:
[
{"name": "Joe", "age": 21},
{"name": "Steve", "age": 27},
{"name": "Michelle", "age": 32},
{"name": "Joe", "age": 23},
]
我知道我可以使用以下命令(使用 httpie)获取所有名称:
http https://some-endpoint | jq '.[] | .name'
# output
Joe
Steve
Michelle
Joe
如何获得所有唯一的名称(因此没有重复的名称)?
假设输入有效 JSON,以下 jq 程序将生成一个包含不同名称的数组:
map(.name) | unique
如果输入有多余的逗号,如示例所示,您可能希望考虑使用预处理器,例如 any-json
或 hjson
.