过滤子数组中的条目

时间:2019-02-13 11:49:26

标签: arrays json select jq

如何过滤json子数组中的项目?

例如,带有:

{
  "country": "Australia",
  "cities": [
    "Melbourne",
    "Sydney",
    "Brisbane",
    "Perth"
  ]
}

我需要过滤掉“布里斯班”和“珀斯”才能获得。

{
  "country": "Australia",
  "cities": [
    "Melbourne",
    "Sydney"
  ]
}

我尝试了select(something|test("Brisbane|Perth")|not)的不同组合,但没有成功。

2 个答案:

答案 0 :(得分:3)

您可以使用减法:

jq '.cities -= ["Perth", "Brisbane"]'

输出:

{
  "country": "Australia",
  "cities": [
    "Melbourne",
    "Sydney"
  ]
}

答案 1 :(得分:2)

您可以将更新分配运算符|=map组合使用

jq '.cities|=map(if . == "Brisbane" or . == "Perth" then empty else . end)'