2014-12-01 8 views
62

W moim skrypt powłoki UNIX, gdy wykonanie polecenia curl, będą wyświetlane moje curl wynik poniżej której jestem skierowanie go do pliku:wyjście Curl do wyświetlenia w czytelnym formacie JSON w skrypcie powłoki UNIX

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

Ale chcę to wyjście umieścić w czytelnym formacie JSON jak poniżej w pliku:

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

Pls sugerować

Odpowiedz

161

Spróbuj zrobić tak:

curl ... | json_pp 

lub użyciu filtra Tożsamość:

curl ... | jq '.' 

enter image description here

lub i :

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

można być nieco elaborative tu proszę – Jams

+2

O co? Dałem ci 2 rozwiązania, by ładnie wydrukować twój JSON. Oba muszą być zasilane przez rurę. Musisz tylko zastąpić ... swoim poleceniem curl. –

+0

to sposób? Curl -i -vs -X POST -H "$ SESSION_TOKEN" -H "$ AUTH_TOKEN" -H "Akceptuj: $ ACCEPT_HEADER" -H "Content-Type: text/plain" "http: // $ BASE_URI/api "| json_pp >> jsonoutput.json – Jams

20

Domyślam się, że chcesz prettify wyjście JSON . To może być osiągnięte przy użyciu Pythona:

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

+0

Dzięki za odpowiedź. Ale nie używam Pythona, używam powłoki. może prowadzić mnie na powłoce – Jams

+0

@Jams, która wykonuje python z powłoki, dając całkiem wydrukowane wyjście. – agconti

+0

Doskonałe rozwiązanie, ponieważ preinstalowany jest python. – reversiblean

4

znalazłem json_reformat być bardzo przydatna. Właśnie zrobiłem:

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

to wszystko!

-3

Jeśli API wspiera wtedy po prostu trzeba dołączyć ?pretty słowo kluczowe do polecenia curl as-
Jeśli komenda curl jest jak to-
curl -XGET 'http://localhost:9200/_cluster/state'
potem mieć ładny wykorzystanie wyjścia jak to-
curl -XGET 'http://localhost:9200/_cluster/state'?pretty

+4

Działa to tylko wtedy, gdy API to obsługuje. – ufdeveloper

3

Jest to dodanie do odpowiedzi Gilles'a. Można to zrobić na wiele sposobów, ale osobiście wolę coś lekkiego, łatwego do zapamiętania i powszechnie dostępnego (na przykład ze standardowymi instalacjami LTS o preferowanym zapachu lub łatwym do zainstalowania w systemie Linux) na popularnych systemach * nix.

Wybrane opcje preferowanej kolejności:

moduł
  1. Pythona Json.tool np echa '{ "foo": "lorem", "bar": "ipsum"}' | pyton -mjson.tool (Plusy: dostępne niemal wszędzie Wady: Nie kodowania kolorów)

  2. JQ (może wymagać jedną instalację czas) echo „{ "foo": "lorem", "bar":„Ipsum "} '| jq (wady: wymaga instalacji jq; plusy: kodowanie kolorami i wszechstronność)

  3. json_pp (dostępne w systemie Ubuntu 16.04 LTS), np. echo '{"foo": "lorem", "bar": "ipsum"}' | json_pp

  4. Dla użytkowników Ruby, gem install jsonpretty echo '{ "foo": "lorem", "bar": "ipsum"}' | jsonpretty

9
  1. brew install jq
  2. command + | jq
  3. (Przykład: curl localhost:5000/blocks | jq)
  4. Zapraszamy!

enter image description here

+1

Dodatkowo musiałem użyć filtru tożsamości 'curl ... | jq "." na https://stackoverflow.com/a/27238477/1860663 – Pocketsand

+0

@ Pocketsand - całkiem niezły! Dziękuję Ci! – alexanderjsingleton

Powiązane problemy