127 votes

Analyseur JSON en ligne de commande Unix?

Quelqu'un peut-il recommander un analyseur JSON Unix (à votre goût) pouvant être utilisé pour analyser les valeurs d'une réponse JSON dans un pipeline?

234voto

muhqu Points 2828

Je préfère `` qui semble être disponible par défaut sur la plupart * nix de systèmes d’exploitation par défaut.

Mais il est à noter que ceci va trier toutes les clés dans l’ordre alphabétique, qui est ou peut être une bonne chose dans où le json généré par certains langue utilisée non ordonnée HashMaps...

146voto

Daan Mortier Points 699

Si vous êtes à la recherche d'un portable C compilé outil:

http://stedolan.github.com/jq/

Sur le site:

jq est comme sed pour les données JSON - vous pouvez l'utiliser pour couper et le filtre et la carte et de transformer des données structurées avec la même facilité que sed, awk, grep et amis vous permettent de jouer avec le texte.

jq peut marquer le format des données que vous avez dans celui que vous voulez avec très peu d'effort, et le programme pour le faire est souvent plus court et plus simple que ce que vous attendez.

Tutoriel: http://stedolan.github.com/jq/tutorial/
Manuel: http://stedolan.github.com/jq/manual/
Télécharger: http://stedolan.github.com/jq/download/

62voto

Dave Dopson Points 16690

J'ai créé un module spécialement conçu pour la ligne de commande JSON manipulation:

https://github.com/ddopson/underscore-cli

  • FLEXIBLE - LE "swiss army knife" outil pour le traitement des données JSON - peut être utilisé comme un simple imprimeur, ou plein alimenté Javascript de ligne de commande
  • PUISSANT - Expose toute la puissance et la fonctionnalité de underscore.js (plus le trait de soulignement.chaîne de caractères)
  • SIMPLE - il est simple à écrire JS one-liners similaire à l'aide de "perl -pe"
  • ENCHAÎNÉS - commande Plusieurs invokations peuvent être liés ensemble pour créer un pipeline de traitement de données
  • MULTI-FORMAT Riche de soutien pour l'entrée / la sortie des formats d'impression, strict, JSON, etc [bientôt]
  • DOCUMENTÉ - Excellente ligne de commande de la documentation avec de multiples exemples pour chaque commande

Il vous permet de faire des choses puissantes vraiment facilement:

cat earthporn.json | underscore select '.data .title'
# [ 'Fjaðrárgljúfur canyon, Iceland [OC] [683x1024]',
#   'New town, Edinburgh, Scotland [4320 x 3240]',
#   'Sunrise in Bryce Canyon, UT [1120x700] [OC]',
# ...
#   'Kariega Game Reserve, South Africa [3584x2688]',
#   'Valle de la Luna, Chile [OS] [1024x683]',
#   'Frosted trees after a snowstorm in Laax, Switzerland [OC] [1072x712]' ]

cat earthporn.json | underscore select '.data .title' | underscore count
# 25

underscore map --data '[1, 2, 3, 4]' 'value+1'
# prints: [ 2, 3, 4, 5 ]

underscore map --data '{"a": [1, 4], "b": [2, 8]}' '_.max(value)'
# [ 4, 8 ]

echo '{"foo":1, "bar":2}' | underscore map -q 'console.log("key = ", key)'
# key = foo
# key = bar

underscore pluck --data "[{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}]" name
# [ 'moe', 'larry', 'curly' ]

underscore keys --data '{name : "larry", age : 50}'
# [ 'name', 'age' ]

underscore reduce --data '[1, 2, 3, 4]' 'total+value'
# 10

Et il a l'un des meilleurs "smart-blanc" JSON formateurs disponibles:

Si vous avez des demandes de fonctionnalités, un commentaire sur ce post ou en ajouter une question sur github. Je serais heureux de hiérarchiser les fonctions qui sont nécessaires par les membres de la communauté.

19voto

Ether Points 34103

Tout d'abord, installez le JSON module CPAN:

cpan JSON

Ensuite, vous pouvez utiliser cette ligne de commande de l'analyseur (qui pourrait s'inscrire dans un bash alias si vous le souhaitez):

perl -MData::Dumper -MJSON=from_json -ne'print Dumper(from_json($_))'

14voto

CoolAJ86 Points 19341

La Caisse TickTick.

C'est un vrai Bash parser JSON.

#!/bin/bash
. /path/to/ticktick.sh

# File
DATA=`cat data.json`
# cURL
#DATA=`curl http://foobar3000.com/echo/request.json`

tickParse "$DATA"

echo ``pathname``
echo ``headers["user-agent"]``

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X