Outils pour utilisateurs

Outils du site


web:javascript:json:jq

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
web:javascript:json:jq [2018/12/17 17:14] sgariepyweb:javascript:json:jq [2022/02/02 00:42] – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== jq ====== ====== jq ======
  
-jq est un programme en ligne de commande pour traiter du JSON.  Le [[https://stedolan.github.io/jq/|site officiel]].+jq est un programme en ligne de commande pour traiter du JSON.  Le [[https://stedolan.github.io/jq/|site officiel]].  [[https://earthly.dev/blog/jq-select/|An Introduction to JQ]] 
 + 
 + 
 +====== Installation ====== 
 + 
 + 
 +Ubuntu: 
 + 
 +  $ sudo apt-get install jq 
 + 
 +macOS: 
 + 
 +  $ brew install jq 
 + 
 +====== Utilisation ====== 
  
  
Ligne 36: Ligne 51:
 ] ]
 </code> </code>
 +
 +  $ cat companies.json | jq 'map(select(.country == "USA" and .employees >= 200000))'
 +  
 +
 +En sortie nous aurons donc:
 +
 +<code jsvaacript>
 +[
 +  {
 +    "id": 3,
 +    "name": "IBM",
 +    "country": "USA",
 +    "employees": 250000
 +  }
 +]
 +</code>
 +
 +Un autre exemple, pris d'une [[https://stackoverflow.com/questions/36571556/how-to-query-a-json-file|question sur SO]], si on a :
 +
 +<code javascript>
 +{
 +    "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"
 +                            }
 +                        ]
 +                    }
 +                ]
 +            }
 +        }
 +    }
 +}
 +</code>
 +
 +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 ======
 +
 +  * [[https://programminghistorian.org/en/lessons/json-and-jq|Reshaping JSON with jq]]
 +  * [[https://gist.github.com/olih/f7437fb6962fb3ee9fe95bda8d2c8fa4|Cheat Sheet]]
 +
 +
web/javascript/json/jq.txt · Dernière modification : 2023/06/12 15:05 de sgariepy