GNU/Linux >> Tutoriels Linux >  >> Linux

Analyser un champ d'un tableau Json dans un tableau Bash ?

J'ai une sortie JSON qui contient une liste d'objets stockés dans une variable. (Je ne m'exprime peut-être pas correctement)

[
  {
    "item1": "value1",
    "item2": "value2",
    "sub items": [
      {
        "subitem": "subvalue"
      }
    ]
  },
  {
    "item1": "value1_2",
    "item2": "value2_2",
    "sub items_2": [
      {
        "subitem_2": "subvalue_2"
      }
    ]
  }
]

J'ai besoin de toutes les valeurs pour item2 dans un tableau pour qu'un script bash soit exécuté sur Ubuntu 14.04.1.

J'ai trouvé un tas de façons d'obtenir le résultat complet dans un tableau, mais pas seulement les éléments dont j'ai besoin

Réponse acceptée :

Utilisation de jq :

$ cat json
[
  {
    "item1": "value1",
    "item2": "value2",
    "sub items": [
      {
        "subitem": "subvalue"
      }
    ]
  },
  {
    "item1": "value1_2",
    "item2": "value2_2",
    "sub items_2": [
      {
        "subitem_2": "subvalue_2"
      }
    ]
  }
]

CODE :

arr=( $(jq -r '.[].item2' json) )
printf '%sn' "${arr[@]}"

SORTIE :

value2
value2_2

Linux
  1. Migrer de l'analyse vers l'espace rack

  2. démarrer apachectl à partir de bash

  3. Comment puis-je obtenir des valeurs uniques à partir d'un tableau dans Bash ?

  4. Bash capturant la sortie de awk dans le tableau

  5. bash:placez les fichiers de liste dans une variable et mais la taille du tableau est 1

Bash break :comment sortir d'une boucle

Tableaux bash

Tableau associatif dans Bash

Comment compresser tous les fichiers de tous les sous-répertoires dans un fichier compressé dans bash

Convertir une chaîne de texte en bash en tableau

Extraire les chemins manquants du tableau bash de chemins