web-dev-qa-db-ja.com

UNIXシェルスクリプトで読み取り可能なJSON形式で表示するためのカール出力

私のUNIXシェルスクリプトでは、私がcurlコマンドを実行すると、私のcurl結果は以下のように表示され、それをファイルにリダイレクトします。

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

しかし、私はこの出力が以下のような読みやすいJSONフォーマットでファイルに置かれることを望みます:

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

Plsは示唆している

148
Jams

これをやってみてください。

curl ... | json_pp 

または、 jq を使用して、アイデンティティフィルタを使用します。

curl ... | jq '.'

enter image description here

または nodejs および bash を使用すると、

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

チェック https://stedolan.github.io/jq/

361
Gilles Quenot

私はあなたがJSON出力をきれいにしたいと思っていると思います。それはpythonを使って達成できます。

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

33
0xbb
  1. brew install jq
  2. command + | jq
  3. (例:curl localhost:5000/blocks | jq
  4. 楽しい!

enter image description here

30

私はjson_reformatがとても便利であることがわかりました。だから私はちょうど次のようにしました:

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

それでおしまい!

5
Raptor

これはジルの答えに追加することです。これを行うには多くの方法がありますが、私は一般的な* nixシステム上で軽量で覚えやすく、普遍的に利用可能なもの(例えば、好みのLinuxフレーバーの標準LTSインストールが付属)を好みます。

これが好ましい順序でのオプションです。

  1. Python Json.toolモジュール、例えばecho '{"foo": "lorem"、 "bar": "ipsum"}' | python -mjson.tool(長所:ほぼどこでも利用可能、短所:色分けなし)

  2. jq(1回インストールが必要な場合があります)echo '{"foo": "lorem"、 "bar": "ipsum"}' | jq(短所:jqをインストールする必要があります;長所:カラーコーディングと多用途)

  3. json_pp(Ubuntu 16.04 LTSで利用可能)、例えばecho '{"foo": "lorem"、 "bar": "ipsum"}' | json_pp

  4. Rubyユーザーの場合、gem install jsonpretty echo '{"foo": "lorem"、 "bar": "ipsum"}' | jsonpretty

4
Zhenhua

チェックアウト curljson

$ pip install curljson
$ curljson -i <the-json-api-url>
4
mitnk
python -m json.tool
Curl http://127.0.0.1:5000/people/api.json | python -m json.tool

また助けることができます。

3
Vishnu

this node module を使用できます

Sudo npm i -g json;

次に、curlの後に|jsonを追加します。 curl http://localhost:8880/test.json |json

1
Alex