私の 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
選択できるソリューションはいくつかあります:
json
json は、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
。
jq: 軽量で柔軟なコマンドライン 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"
}
とキシデル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"
}