如何使用JQ过滤数组和切片结果



假设我有以下数据:

{
   "dashboards": [
     {
       "name": "first",
       "type": "standard"
     },
     {
       "name": "second",
       "type": "custom"
     }
   ]
}

(实际上,数据比这更多,我只是在显示数据的结构是什么(

我要做的是获得standard类型的前10个仪表板。

我知道我可以得到 standard仪表板: jq '.dashboards[] | select(.type == "standard")'

,但我不知道如何切成结果的数组...

如果您希望结果作为数组,则可以使用map

.dashboards | map(select(.type=="standard")) | .[0:10]

但是,这效率低下。为了效率,最好使用limit如下所述。

如果您希望这些项目作为流,则可以写:

limit(10; .dashboards[] | select(.type=="standard"))

如果您希望结果作为数组,只需将上述JQ表达式包装在方括号中。

最新更新