提取json数组/对象的第一个和最后一个值

时间:2017-08-31 10:40:47

标签: json jq

我在Windows 10环境中使用jq 1.5。我通过api收到几个信息,包括不同的城市阵列:

  {

  "cruises": [
    {

      "waypoint_cities": [
        "Palma de Mallorca",
        "Cádiz",
        "Puerto del Rosario, Fuerteventura",
        "Arrecife, Lanzarote",
        "Arrecife, Lanzarote",
        "Agadir",
        "Gibraltar",
        "Barcelona",
        "Palma de Mallorca"
      ]}]}

如何使用jq找到这些数组的第一个和最后一个条目?我试过了函数min / maxby,但是这个函数只传递了字母表中第一个和最后一个的字母。

问候 蒂莫

3 个答案:

答案 0 :(得分:6)

[0]返回数组中的第一个元素; [-1]返回最后一个。 (参见手册的“基本过滤器”部分。)

对于上面给出的输入

jq '.[][][][0, -1]'

产生此输出

"Palma de Mallorca"
"Palma de Mallorca"

答案 1 :(得分:6)

以下是使用firstlast

的解决方案
.cruises[].waypoint_cities | first, last

输出

"Palma de Mallorca"
"Palma de Mallorca"

答案 2 :(得分:-1)

假设数据已解析并存在var data

  • 首先:data.cruises[0].waypoint_cities[0]
  • 最后:data.cruises[0].waypoint_cities[data.cruises[0].waypoint_cities.length-1]