2017-03-10 4 views
1

私はこのフォーラムからいくつかの質問と回答を読んでいましたが、探しているものはまだ見つかりませんでした。jsonレスポンスを解析し、特定のIDをすべて取得して配列に格納してからシェルスクリプトから削除します

ここでカールCMDからの応答:

:私はその後、 curl CMDS同様

[{ 
    "_links": { 
     "list": { 
      "href": "http://10.10.10.185:8080/vndfs/lcd/v3/vdfs" 
     }, 
     "modifyInfo": { 
      "href": "http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/TEST1-5cda5079a2cb47c28466bc1983f8b2e6" 
     } 
    }, 
    "description": "Purple is my color", 
    "id": "TEST1-5cda5079a2cb47c28466bc1983f8b2e6" 
}, { 
    "_links": { 
     "list": { 
      "href": "http://10.10.10.185:8080/vndfs/lcd/v3/vdfs" 
     }, 
     "modifyInfo": { 
      "href": "http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/TEST2-5cda5079a2cb47c28466bc1983f8b2e6" 
     } 
    }, 
    "description": "Blue is my color", 
    "id": "TEST2-5cda5079a2cb47c28466bc1983f8b2e6" 
}] 

getid.shを使用して、これらのIDを削除し、すべてのIDを取得し、配列にそれらを格納したいと思います エコーから

#!/bin/bash VDF=`curl -s GET http://10.10.10.185:8080/vdfs/lcd/v3/vdfs VDFSID=`echo $VNF | python -c 'import json,sys; response=json.loads(sys.stdin.read()); print response[0]["id"]'` echo $VDFSID 

出力:

TEST1-5cda5079a2cb47c28466bc1983f8b2e6 

が、私はすべてのすべてのIDを取得し、配列に格納したい、私は

for i in response['id']: 
    curl -XDELETE http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/$i 

は、任意のこのためにアドバイス各TEST1-XXTEST2-XXX IDを削除することができますか?前もって感謝します。

答えて

1

あなたはcurlに結果を注入するxargjq JSONパーサーを使用することができます。

curl -s -X GET http://10.10.10.185:8080/vdfs/lcd/v3/vdfs | \ 
    jq -r ' .[] | .id ' | \ 
    xargs -I {} curl -X DELETE http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/{} 

これはあなたのJSON配列からidを抽出し、URL http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/<ID>

でIDごとカールし、連続呼び出しを行いますjsontoolをJSONの解析に使用することもできます(npmでインストール)。

curl -s -X GET http://10.10.10.185:8080/vdfs/lcd/v3/vdfs | \ 
    json -a id | \ 
    xargs -I {} curl -X DELETE http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/{} 
+0

ありがとうございます。私のOSはJQに対応していません。私はいくつかの例を見ていたので、私はそれについて考えましたが、あなたの詳細があります。 jqの代替? -mjson.toolをpythonから起動しますが、出力のフォーマットのみを行います。 – AndrewS

+0

また、[jsontool](https://www.npmjs.com/package/jsontool)を使用することもできます。更新された投稿 –

+0

をダウンロードしました。jq-linux64 portableをダウンロードし、OSにコピーしました。私はそれを使用することができます。ありがとう。 – AndrewS

関連する問題