代码之家  ›  专栏  ›  技术社区  ›  Johnny Metz

jq获取对象列表中给定键的所有唯一值

jq
  •  0
  • Johnny Metz  · 技术社区  · 3 年前

    假设有一个端点返回以下数组:

    [
      {"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
    

    如何获得所有唯一的名称(因此没有重复)?

    0 回复  |  直到 3 年前
        1
  •  1
  •   peak    3 年前

    假设输入是有效的JSON,下面的jq程序将生成一个不同名称的数组:

    map(.name) | unique
    

    如果输入与所示的示例具有多余逗号,则您可能希望考虑使用预处理器,例如 any-json hjson .