2017-08-31 2 views
0

J'utilise jq 1.5 dans un environnement Windows 10. Je reçois via api plusieurs informations comprennent des réseaux de villes différentes comme ça:Extraire la première et la dernière valeur d'un tableau/objet json

{ 

    "cruises": [ 
    { 

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

Comment puis-je trouver la première et la dernière entrée de ces tableaux avec JQ? J'ai essayé la fonction min/maxby mais cette fonction ne délivre que les entrys avec le premier et le dernier en charakter de l'alphabet.

ce qui a trait Timo

+0

afficher votre résultat attendu – RomanPerekhrest

Répondre

3

Voici une solution en utilisant first et last

.cruises[].waypoint_cities | first, last 

Sortie

"Palma de Mallorca" 
"Palma de Mallorca" 
+0

Bonjour @ jq170727, fonctionne comme un charme. – TimoC

-1

En supposant que les données sont analysées et vit dans var data:

  • premier: data.cruises[0].waypoint_cities[0]
  • dernière: data.cruises[0].waypoint_cities[data.cruises[0].waypoint_cities.length-1]
1

[0] renvoie le premier élément un tableau; [-1] renvoie le dernier. (Voir la section "filtres de base" du manuel.)

Pour l'entrée donnée ci-dessus

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

donne cette sortie

"Palma de Mallorca" 
"Palma de Mallorca"