2016-07-20 24 views
1

私は例えば、バッチスクリプトでJSONをパースするためのpythonを使用したい:jsonを1行のPythonコマンドで解析するにはどうすればよいですか?

カールからJSONの出力は次のようになり
HOSTNAME=$(curl -s ${HOST} | python ?) 

:私は、単一の行でこれを行うことができますどのように

'{"hostname":"test","domainname":"example.com"}' 

Pythonコマンド? curlコマンドから返される以下のJSONに基づいて

+1

JSONをパースに専用されているコマンドラインからjq' 'のようなものを使用する方がはるかに簡単かつので、クリーンなデザインを持っています' HOSTNAME = $(curl -s $ HOST | jq -r '.hostname') '。 – chepner

+1

投票者がダウンした理由を投票してください。何が間違っているのか分からなければ、質問を改善するのは難しいです。 –

+1

@chepner trueですが、問題のホストにjqがインストールされていないか、インストールできませんが、pythonとjsonモジュールがあります。 –

答えて

1

...

'{"hostname":"test","domainname":"example.com"}' 

あなたはその後、PythonのJSONモジュールを使用してホスト名を抽出するためのpythonを使用することができます。

HOSTNAME=$(curl -s ${HOST} | python -c \ 
    'import json,sys;print json.load(sys.stdin)["hostname"]') 

なお、私は\を使用して行を分割し、stackoverflowでより読みやすくする。また、chepner'sコメントに基づいてコマンドを簡略化しました。

オリジナルソース:Parsing JSON with Unix tools

も参照してください:https://wiki.python.org/moin/Powerful%20Python%20One-Liners

+0

1ライナーの場合、私は中間変数 'obj'を気にしません。python -c 'import json、sys; print json.load(sys.stdin)[" hostname "]'。 – chepner

+0

@chepner - nice! –

0
echo '{"hostname":"test","domainname":"example.com"}' | python -m json.tool 
関連する問題