• [^] # gron'telnatif

    Posté par (site web personnel, Mastodon) . En réponse au journal Aujourd'hui on ne parle pas de k-pop, mais de JSON !. Évalué à 4. Dernière modification le 25 juin 2023 à 16:08.

    De prime abord, ce que réalise gron in.json (i.e. déplier le JSON pour que ce soit manipulable par les outils qui manipulent des lignes de texte brut) s'obtient aussi avec :

    • jq . in.json avec en prime l'indentation et ça s'en sort mieux en terme de consommation mémoire (cf. l'autre message) Mais parfois il n'est pas présent et je ne peux pas l'installer non plus, donc on regarder du côté des langages de script présents sur la bécane (cas ci-après.)
    • python -m json.tool in.json dans le cas-ci, mais si on a besoin d'aller plus loin c'est possible
      • python3 -c "import sys, json; print(json.load(sys.stdin)" in.json
      • export PYTHONIOENCODING=utf8 python2 -c "import sys, json; print json.load(sys.stdin)" in.json
    • ruby -r json -e 'jj JSON.parse gets' < in.json avec le Gem JSON qu'il faut installer avant s'il ne l'est pas déjà. Il y a aussi jazor qui est sympa
    • côté PERL...
      • json_xs -t null < in.json en utilisant le module JSON::XS qui fait appel à du code C (XS pour eXtension System)
      • sinon on peut se rabattre sur json_pp (PP pour Pur Perl) qui utilise le module JSON:PP présent dans la plupart des installations systèmes.
      • Il y a aussi un autre module JSON tout court qui permet d'écrire perl -MJSON -nE 'say JSON->new->pretty->encode(from_json $_)' in.json ou perl -MJSON -e 'print encode_json(decode_json(<STDIN>), {pretty => 1})' < in.json par exemple
    • PHP n'est pas en reste depuis la version 5.2 : php -r 'print_r(json_decode(fgets(STDIN)))' (ça fait longtemps, je l'ai fait de tête sans tester)
    • En Go...
    • bat -p -l json in.json (cet alternatif à cat est parfois surprenant)
    • Avec miller quelque chose comme mlr --json --ojson in.json
    • Il me semble qu'avec Node.JS qu'on peut faire quelque chose comme node -pe 'JSON.parse(process.argv[1])' in.json
    • PowerShell a aussi son ConvertFrom-Json

    Autres outils qui peuvent valoir le détour : jshon, jwalk, fx, jsawk, etc.

    P.S. Je n'ai pas mentionné json-flatten
    P.S.2 Mentionnez/référencez votre astuce aussi

    "It is seldom that liberty of any kind is lost all at once." ― David Hume