IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[JQ] Recherche dans tableau JSON


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut [JQ] Recherche dans tableau JSON
    Bonjour,
    Je cherche à réaliser mon premier script .
    En utilisant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    get_genre(){
    curl -s --request GET \
    --url "https://api.themoviedb.org/3/genre/movie/list?api_key=$APIKEY&language=fr-FR"
    }
    data1=$(get_genre)
      echo "$data1" | jq '.genres'
    j'obtiens un résultat du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    {
      "genres": [
        {
          "id": 28,
          "name": "Action"
        },
        {
          "id": 12,
          "name": "Aventure"
        },
        {
          "id": 16,
          "name": "Animation"
        },
    Avec une autre fonction je récupére une variable $test correspondant a un genres.id (28 ou 12 ou autres)
    Ce que je voudrais c'est récupérer le name de l'id correspondant.
    Je ne sais pas comment faire une boucle en comparant "$test" à chaque "genre.id" et si concordant "$data1" | jq '.genres[?].name'

    Merci
    (Je vous rassure dans ma tête c'est claire )
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var=28
    jq -r --arg extvar "$var" '.genres[]|select(.id==($extvar|tonumber))|.name'
    jq
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Re
    Merci pour la réactivité

    Voila comment j'ai utilisé ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var=28                                                                                                        
      genre=$("$data1" | jq -r --arg extvar "$var" '.genres[]|select(.id==($extvar|tonumber))|.name')
      echo "$genre"
    Et le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    line 110: {"genres":[{"id":28,"name":"Action"},{"id":12,"name":"Aventure"},{"id":16,"name":"Animation"},{"id":35,"name":"Comédie"},{"id":80,"name":"Crime"},{"id":99,"name":"Documentaire"},{"id":18,"name":"Drame"},{"id":10751,"name":"Familial"},{"id":14,"name":"Fantastique"},{"id":36,"name":"Histoire"},{"id":27,"name":"Horreur"},{"id":10402,"name":"Musique"},{"id":9648,"name":"Mystère"},{"id":10749,"name":"Romance"},{"id":878,"name":"Science-Fiction"},{"id":10770,"name":"Téléfilm"},{"id":53,"name":"Thriller"},{"id":10752,"name":"Guerre"},{"id":37,"name":"Western"}]}: command not found
    La ligne 110 etant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    genre=$("$data1" | jq -r --arg extvar "$var" '.genres[]|select(.id==($extvar|tonumber))|.name')
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  4. #4
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Autant pour moi j'ai oublié le "echo"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    genre=$(echo "$data1" | jq -r --arg extvar "$var" '.genres[]|select(.id==($extvar|tonumber))|.name')
    Merci
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recherche dans tableau excel
    Par zepeto dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 30/06/2008, 09h01
  2. Recherche dans Tableau/Array
    Par Danyel dans le forum VB.NET
    Réponses: 9
    Dernier message: 13/04/2008, 21h26
  3. Recherche dans tableau 2 dimension / Copie tableau 2 dimension vers 1
    Par mustang-ffw02 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/10/2007, 18h50
  4. fonction recherche dans tableau javascript
    Par calitom dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/11/2006, 15h51
  5. Recherche dans Tableau de point
    Par Platypus dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 30/08/2005, 18h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo