パイプラインでJSON応答からの値をイントロスペクトするために使用できるUnix(フレーバーを選択)JSONパーサーを推奨できますか?
npm install -g ramda-cli
パイプラインでJSON応答からの値をイントロスペクトするために使用できるUnix(フレーバーを選択)JSONパーサーを推奨できますか?
npm install -g ramda-cli
回答:
Perlコアに組み込まれたモジュールを使用して、このコマンドラインパーサー(必要に応じてbashエイリアスに入れることができます)を使用できます。
perl -MData::Dumper -MJSON::PP=from_json -ne'print Dumper(from_json($_))'
perl -e "use JSON; print to_json( decode_json(<>), { pretty => 1 } )"
私python -m json.tool
はデフォルトでほとんどの* nixオペレーティングシステムでデフォルトで使用できるように見えるのを好みます。
$ echo '{"foo":1, "bar":2}' | python -m json.tool
{
"bar": 2,
"foo": 1
}
ただし、これはすべてのキーをアルファベット順にソートすることに注意してください。これは、jsonが、順序付けされていないHashMapを使用する言語によって生成された場合に適しています。
json.tool
きれいなjsonを印刷するための短い手です。シェルスクリプトでjsonデータを抽出/操作する必要がある場合は、何をするのjq
に純粋な方法を使用します...
json.tool
毎日10回使用しています。質問の「イントロスペック」の意味を読み違えたと思いますので、指摘いただきありがとうございます。
json.tool
は検証とプリティプリントjsonの2つのことしか実行しないためです。jsonのように値をイントロスペクトしませんjq
。
移植可能なCコンパイル済みツールを探している場合:
http://stedolan.github.com/jq/
ウェブサイトから:
jqは sedの JSONデータのために-あなたはスライスし、フィルターにそれを使用し、マップと同じことを簡単に構造化されたデータを変換することができsedは、awkは、グレップと友人はあなたがテキストでプレイしてみましょう。
jqは、ほとんど手間をかけずに、お持ちのデータ形式を必要な形式に変換することができます。そのためのプログラムは、多くの場合、予想よりも短く簡単です。
チュートリアル:http : //stedolan.github.com/jq/tutorial/
マニュアル:http : //stedolan.github.com/jq/manual/
ダウンロード: http //stedolan.github.com/jq/download/
apt install jq
。
jq
。
コマンドラインJSON操作専用に設計されたモジュールを作成しました。
https://github.com/ddopson/underscore-cli
それはあなたが本当に簡単に強力なことをすることを可能にします:
cat earthporn.json | underscore select '.data .title'
# [ 'Fjaðrárgljúfur canyon, Iceland [OC] [683x1024]',
# 'New town, Edinburgh, Scotland [4320 x 3240]',
# 'Sunrise in Bryce Canyon, UT [1120x700] [OC]',
# ...
# 'Kariega Game Reserve, South Africa [3584x2688]',
# 'Valle de la Luna, Chile [OS] [1024x683]',
# 'Frosted trees after a snowstorm in Laax, Switzerland [OC] [1072x712]' ]
cat earthporn.json | underscore select '.data .title' | underscore count
# 25
underscore map --data '[1, 2, 3, 4]' 'value+1'
# prints: [ 2, 3, 4, 5 ]
underscore map --data '{"a": [1, 4], "b": [2, 8]}' '_.max(value)'
# [ 4, 8 ]
echo '{"foo":1, "bar":2}' | underscore map -q 'console.log("key = ", key)'
# key = foo
# key = bar
underscore pluck --data "[{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}]" name
# [ 'moe', 'larry', 'curly' ]
underscore keys --data '{name : "larry", age : 50}'
# [ 'name', 'age' ]
underscore reduce --data '[1, 2, 3, 4]' 'total+value'
# 10
そして、利用可能な最高の「スマートホワイトスペース」JSONフォーマッターの1つがあります。
機能のリクエストがある場合は、この投稿にコメントするか、githubに問題を追加してください。コミュニティのメンバーが必要とする機能に優先順位を付けて喜んでいます。
wget
すべてのURLのURL配列を含むJSONファイルを指定します。
underscore
ネストされたオブジェクトと配列を持つネストされたjsonの解析に使用できますか?
JSONコマンドライン処理ツールキットもありますスタックにnode.jsとnpmがある場合ます。
そして、UnixコマンドラインでJSONをマッサージするための別の「json」コマンド。
そして、他の選択肢があります:
npm install json
ます。
json
は現在、まったく別のパッケージに引き継がれているようです。
JshonまたはJSON.shについて誰かが言及しましたか?
https://github.com/keenerd/jshon
jsonをそれにパイプし、jsonオブジェクトをトラバースして、現在のオブジェクトへのパス(JSON配列として)を出力し、空白なしでオブジェクトを出力します。
http://kmkeen.com/jshon/
Jshonは、stdinからjsonテキストを読み込み、アクションを実行してから、stdoutに最後のアクションを表示し、通常のテキスト処理パイプラインの一部としても作成されました。
brew install jshon
、cat *.json | jshon
バッシュ/ Pythonの、ここでのpythonの周りの基本的なラッパーですsimplejson
。
json_parser() {
local jsonfile="my_json_file.json"
local tc="import simplejson,sys; myjsonstr=sys.stdin.read(); "`
`"myjson=simplejson.loads(myjsonstr);"
# Build python print command based on $@
local printcmd="print myjson"
for (( argn=1; argn<=$#; argn++ )); do
printcmd="$printcmd['${!argn}']"
done
local result=$(python -c "$tc $printcmd.keys()" <$jsonfile 2>/dev/null \
|| python -c "$tc $printcmd" <$jsonfile 2>/dev/null)
# For returning space-separated values
echo $result|sed -e "s/[]|[|,|']//g"
#echo $result
}
それは本当にネストされた辞書スタイルのデータを処理するだけですが、私が必要とするもので機能し、jsonをウォークスルーするのに役立ちます。それはおそらく味に適応させることができます。
とにかく、さらに別の外部依存関係を調達したくない人たちのために生まれたもの。もちろんpythonを除いて。
例 json_parser {field1} {field2}
実行されprint myjson['{field1}']['{field2}']
、に関連付けられたキーまたは値のいずれかが{field2}
スペースで区切られて生成されます。
大きなjsonオブジェクトを簡単に探索するために作成した小さなコマンドラインjsonエクスプローラーであるjkidを作成しました。オブジェクトは「横断的に」探索でき、コンソールのオーバーフローを回避するために「プレビュー」オプションがあります。
$ echo '{"john":{"size":20, "eyes":"green"}, "bob":{"size":30, "eyes":"brown"}}' > test3.json
$ jkid . eyes test3.json
object[.]["eyes"]
{
"bob": "brown",
"john": "green"
}
jkid
Mac にインストールするにはどうすればよいですか?