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

Tim*_*moC 5 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"
      ]}]}
Run Code Online (Sandbox Code Playgroud)

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

对蒂莫说

use*_*693 6

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

对于上面给出的输入

jq '.[][][][0, -1]'
Run Code Online (Sandbox Code Playgroud)

产生这个输出

"Palma de Mallorca"
"Palma de Mallorca"
Run Code Online (Sandbox Code Playgroud)


jq1*_*727 6

这是使用第一个最后一个的解决方案

.cruises[].waypoint_cities | first, last
Run Code Online (Sandbox Code Playgroud)

产量

"Palma de Mallorca"
"Palma de Mallorca"
Run Code Online (Sandbox Code Playgroud)

  • `last` 在旧版本的 jq 中不可用。在 1.4 中你可以使用`| .[长度-1]` (2认同)