Unix シェル スクリプトで curl 出力を読み取り可能な JSON 形式で表示する 質問する

Unix シェル スクリプトで curl 出力を読み取り可能な JSON 形式で表示する 質問する

私の Unix シェル スクリプトでは、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"}

出力をこのようにフォーマットするにはどうすればよいですか?

ベストアンサー1

選択できるソリューションはいくつかあります:

jsonjson は、JSON を操作するための高速 CLI ツールです。これは、外部依存関係 (それnode.js自体以外) のない単一ファイルの node.js スクリプトです。

$ echo '{"type":"Bar","id":"1","title":"Foo"}' | json
{
  "type": "Bar",
  "id": "1",
  "title": "Foo"
}

必要とする:

# npm install -g json

json_pp: Linux システムで JSON デコード/エンコードに使用できるコマンド ユーティリティ

echo '{"type":"Bar","id":"1","title":"Foo"}' | json_pp -json_opt pretty,canonical
{
   "id" : "1",
   "title" : "Foo",
   "type" : "Bar"
}

予測可能な順序付けの議論を維持したい場合があります-json_opt pretty,canonical


: 軽量で柔軟なコマンドライン JSON プロセッサ。移植可能な C で記述されており、ランタイム依存性はありません。

echo '{"type":"Bar","id":"1","title":"Foo"}' | jq '.'
{
  "type": "Bar",
  "id": "1",
  "title": "Foo"
}

最も単純なjqプログラムは.、入力を受け取り、それを変更せずに出力として生成する式です。

追加jqオプションについてはマニュアル


python yqyq: コマンドライン YAML/XML/TOML プロセッサ - YAML、XML、TOML ドキュメント用の jq ラッパー

$ echo '{"type":"Bar","id":"1","title":"Foo"}' | yq
{
  "type": "Bar",
  "id": "1",
  "title": "Foo"
}

バージョン行くyqここでは機能しません


キシデルCSS、XPath 3.0、XQuery 3.0、JSONiq、またはパターン マッチングを使用して、HTML/XML ページまたは JSON-API からデータをダウンロードして抽出するコマンド ライン ツール。新しい XML/HTML/JSON ドキュメントを作成したり、変換したりすることもできます。

$ echo '{"type":"Bar","id":"1","title":"Foo"}' | xidel -e '$json'
{
  "type": "Bar",
  "id": "1",
  "title": "Foo"
}

:

echo '{"type":"Bar","id":"1","title":"Foo"}' | python -m json.tool
{
    "id": "1",
    "title": "Foo",
    "type": "Bar"
}

そして:

echo '{"type":"Bar","id":"1","title":"Foo"}' | node -p "JSON.stringify( JSON.parse(require('fs').readFileSync(0) ), 0, 1 )"
{
 "type": "Bar",
 "id": "1",
 "title": "Foo"
}

おすすめ記事