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
web:javascript:json:jq [2019/03/03 02:04] sgariepyweb:javascript:json:jq [2023/06/12 15:05] (Version actuelle) – [Utilisation] sgariepy
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]]
  
  
Ligne 112: Ligne 112:
  
   $ cat data.json | jq '.response.result.Countries.row[].FL | {country: .[0].content, president: .[1].content, val: .[1].val} | select(.country == "USA") | {president, val}'   $ cat data.json | jq '.response.result.Countries.row[].FL | {country: .[0].content, president: .[1].content, val: .[1].val} | select(.country == "USA") | {president, val}'
 +
 +
 +
 +===== To Entries avec Map =====
 +
 +Pour //pivoter// les clés d'objets en valeurs, par exemple dans ce cas-ci:
 +
 +<code json>
 +{
 +    "items": {
 +        "01": {
 +            "name": "Name of 01",
 +            "spec": {
 +                "name": "Specific name 01"
 +            }
 +        },
 +        "02": {
 +            "name": "Name of 02",
 +            "spec": {
 +                "name": "Specific name 02"
 +            }
 +        }
 +    }
 +}
 +</code>
 +
 +On peut utiliser ''to_entries'' pour que les items 01 et 02 soient des valeurs de ''key'' et l'objet lui-même soit une valeur:
 +
 +<code>
 +$ cat ./test.json | jq '.items | to_entries'
 +[
 +  {
 +    "key": "01",
 +    "value": {
 +      "name": "Name of 01",
 +      "spec": {
 +        "name": "Specific name 01"
 +      }
 +    }
 +  },
 +  {
 +    "key": "02",
 +    "value": {
 +      "name": "Name of 02",
 +      "spec": {
 +        "name": "Specific name 02"
 +      }
 +    }
 +  }
 +]
 +</code>
 +
 +Avec ''map'', on peut alors façonner un objet comme on le veut:
 +
 +<code>
 +$ cat ./test.json | jq '.items | to_entries | map({ itemCode: .key, name: .value.name, specName: .value.spec.name })'
 +[
 +  {
 +    "itemCode": "01",
 +    "name": "Name of 01",
 +    "specName": "Specific name 01"
 +  },
 +  {
 +    "itemCode": "02",
 +    "name": "Name of 02",
 +    "specName": "Specific name 02"
 +  }
 +]
 +</code>
 +
 +
 +
 +
 +
 +
 +
 +
 +====== 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 ====== ====== Ressources ======
  
   * [[https://programminghistorian.org/en/lessons/json-and-jq|Reshaping JSON with jq]]   * [[https://programminghistorian.org/en/lessons/json-and-jq|Reshaping JSON with jq]]
 +  * [[https://gist.github.com/olih/f7437fb6962fb3ee9fe95bda8d2c8fa4|Cheat Sheet]]
  
  
web/javascript/json/jq.1551575051.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)