Outils pour utilisateurs

Outils du site


web:javascript:json:jq

Ceci est une ancienne révision du document !


jq

jq est un programme en ligne de commande pour traiter du JSON. Le site officiel.

Installation

Ubuntu:

$ sudo apt-get install jq

macOS:

$ brew install jq

Utilisation

Pour chercher certaines occurrences d'un JSON selon certaines valeurs, on peut utiliser select().

En entrée, on a par exemple:

[
  {
    "id": 1,
    "name": "Google",
    "country": "USA",
    "employees": 100000
  },
  {
    "id": 2,
    "name": "Samsung",
    "country": "South Korea",
    "employees": 500000
  },
  {
    "id": 3,
    "name": "Sony",
    "country": "Japan",
    "employees": 750000
  },
  {
    "id": 3,
    "name": "IBM",
    "country": "USA",
    "employees": 250000
  }
]
$ cat companies.json | jq 'map(select(.country == "USA" and .employees >= 200000))'

En sortie nous aurons donc:

[
  {
    "id": 3,
    "name": "IBM",
    "country": "USA",
    "employees": 250000
  }
]

Un autre exemple, pris d'une question sur SO, si on a :

{
    "response": {
        "result": {
            "Countries": {
                "row": [
                    {
                        "no": "1",
                        "FL": [
                            {
                                "content": "USA",
                                "val": "Country"
                            },
                            {
                                "content": "Barack Obama",
                                "val": "President"
                            }
                        ]
                    },
                    {
                        "no": "2",
                        "FL": [
                            {
                                "content": "Cuba",
                                "val": "Country"
                            },
                            {
                                "content": "Raul Castro",
                                "val": "President"
                            }
                        ]
                    }
                ]
            }
        }
    }
}

On peut faire:

$ cat data.json | jq '.response.result.Countries.row[].FL | {country: .[0].content, president: .[1].content, val: .[1].val} | select(.country == "USA") | {president, val}'

Clés d'un fichier de traductions

On peut obtenir les clés de fichiers de traductions (qui sont utilisés pour référencer une chaine à traduire) avec ce jq:

$ cat src/assets/i18n/fr.json | jq -c 'path(..)|[.[]|tostring]|join(".")|select(. != "")|select(index("."))'

Le premier select() permet d'enlever la première clé vide, et l'autre permet d'enlever les clés parents ou racines (ne sont pas nécessairement associé à quelconque texte).

Ressources

web/javascript/json/jq.1579533543.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)