web-dev-qa-db-fra.com

Afficher la sortie curl au format JSON lisible dans un script Unix Shell

Dans mon script Unix Shell, lorsque j'exécute une commande curl, le résultat s'affiche comme ci-dessous, sur lequel je redirige le fichier:

{"type":"Show","id":"123","title":"name","description":"Funny","channelTitle":"ifood.tv","lastUpdateTimestamp":"2014-04-20T20:34:59","numOfVideos":"15"}

Mais, je veux que cette sortie mette dans le format JSON lisible comme ci-dessous dans le fichier:

{"type":"Show",
"id":"123",
"title":"name",
"description":"Funny",
"channelTitle":"ifood.tv",
"lastUpdateTimestamp":"2014-04-20T20:34:59",
"numOfVideos":"15"}

Comment formater la sortie de cette façon?

161
Jams

Essayez de faire ceci:

curl ... | json_pp 

ou avec jq en utilisant le filtre d'identité:

curl ... | jq '.'

enter image description here

ou avec nodejs et bash :

curl ... | node <<< "var o = $(cat); console.log(JSON.stringify(o, null, 4));"

Vérifier https://stedolan.github.io/jq/

390
Gilles Quenot

J'imagine que vous voulez épurer la sortie JSON. Cela pourrait être réalisé en utilisant python:

curl http://localhost:8880/test.json | python -mjson.tool > out.json

36
0xbb
  1. brew install jq
  2. command + | jq
  3. (exemple: curl localhost:5000/blocks | jq .)
  4. Prendre plaisir!

enter image description here

32
alexanderjsingleton

J'ai trouvé json_reformat très pratique. Alors je viens de faire ce qui suit:

curl http://127.0.0.1:5000/people/api.json | json_reformat

c'est ça!

5
Raptor
python -m json.tool
Curl http://127.0.0.1:5000/people/api.json | python -m json.tool

peut aussi aider.

4
Vishnu

Ceci est à ajouter à la réponse de Gilles. Il existe de nombreuses façons de le faire, mais personnellement, je préfère quelque chose de léger, facile à mémoriser et disponible dans le monde entier (par exemple, fourni avec des installations LTS standard de votre version préférée de Linux ou facile à installer) sur des systèmes * nix courants.

Voici les options dans leur ordre préféré:

  1. Module Python Json.tool, par exemple, echo '{"foo": "lorem", "bar": "ipsum"}' | python -mjson.tool (avantages: presque disponible partout; contre: pas de code couleur)

  2. jq (peut nécessiter une installation unique) echo '{"foo": "lorem", "bar": "ipsum"}' | jq (contre: il faut installer jq; avantages: codage couleur et polyvalent)

  3. json_pp (disponible dans Ubuntu 16.04 LTS), par exemple. echo '{"foo": "lorem", "bar": "ipsum"}' | json_pp

  4. Pour les utilisateurs de Ruby, gem install jsonpretty echo '{"foo": "lorem", "bar": "ipsum"}' | Jsonpretty

4
Zhenhua

Départ curljson

$ pip install curljson
$ curljson -i <the-json-api-url>
4
mitnk

Vous pouvez utiliser ce module de noeud

Sudo npm i -g json;

puis ajoutez simplement |json après curl. curl http://localhost:8880/test.json |json

1
Alex