2017-02-21 6 views
-1

私はGET curlコマンドをAPIと通信し、以下に示すようにネットワークのリストを返します。私はBASHかPythonのどちらかを使ってこの情報を抽出したいと思っています。 ({}のすべてのインスタンスのために)一緒にグループ化され、その情報を保持したまま、私は変数を割り当て/抽出し、各ネットワーク上で作業を行うことができるように、各ネットワークの情報を抽出するための最良の方法だろう何curlコマンドからJSON結果をシリアライズ

[ 
     { 
     "id": "L_XXFS", 
     "name": "Terrys_Pizza", 
     "timeZone": "US/Central", 
     }, 
     { 
     "id": "L_52GF", 
     "name": "Clean_Juice", 
     "timeZone": "America/New_York", 
     }, 
     { 
     "id": "L_5999", 
     "name": "JJ_Fish", 
     "timeZone": "US/Central", 
     } 
    ] 

たとえば、Terry's Pizza id: L_XXFSの値は、Terry's Pizzaに接続されていて、他のネットワークに接続されていないことがわかっている必要があります。

また、毎回自分の呼び出しで返されるネットワークの数が異なるため、ハードコーディングすることはできません。

+0

何か試しましたか?あなたが試したコードを投稿すると役立ちます。そうでなければ、問題は少し広すぎます。 – favoretti

+1

あなたがコマンドライン上にいる場合はhttps://stedolan.github.io/jq/を使用することをお勧めします。 – squiguy

+0

"...各ネットワークで動作します" Pythonでこれをやりたいと思うことはほとんどありません。あなたが* 'jq'で仕事をすることができない限り、' bash'で現実的にできることは、JSONを表示することです。 – chepner

答えて

1

curlからの出力を取得している場合は、jqで情報を処理します。このように:

curl ... | jq -r '.[]|.name+":"+.id' 
+0

これは完全に機能しました。私は '' jq''が返すオブジェクトの長さを見つけることができるという点を追加します。私は 'curl ...を使う。 jq -r '。 |その値を 'TOTAL_NETWORKS'に割り当て、' curl ... 'を使ってネットワークを反復するよりも、 jq -r '。[' "$ i" ']> networkvalues.txt'を 'for'ループで実行します。ファイルに 'sed'を使って値を割り当てます。 – jagdpanzer