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 [2020/01/20 16:09] – [Ressources] 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 ======
web/javascript/json/jq.1579532970.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)