2017-02-23 116 views
1

我似乎正在努力削減從CloudFlare's API的JSON響應。Cloudflare API截斷JSON響應

當我捲曲https://api.cloudflare.com/client/v4/zones/xxxx/settings URL返回所有設置爲我的域的JSON響應,如區域:

 "editable": true, 
     "id": "server_side_exclude", 
     "modified_on": null, 
     "value": "on" 
    }, 
    { 
     "editable": false, 
     "id": "sha1_support", 
     "modified_on": null, 
     "value": "off" 
    }, 
    { 
     "editable": false, 
     "id": "sort_query_string_for_cache", 
     "modified_on": null, 
     "value": "off" 
    }, 
    { 
     "certificate_status": "active", 
     "editable": true, 
     "id": "ssl", 
     "modified_on": "2016-05-18T14:38:45.665403Z", 
     "value": "flexible" 

這是因爲我的課程,由管道將捲曲蟒蛇削減IT -m json.tool。我想實現基本上是打印的一切,例如:

server_side_exclude = on 
sha1_support = off 
sort_query_string_for_cache = off 

(該ID =值)。我試圖在不同的變量ID和值存儲,例如:

IDs=$(curl https://api.cloudflare.com/client/v4/zones/xxxx/settings | python -m json.tool | grep id) 
Values=$(curl https://api.cloudflare.com/client/v4/zones/xxxx/settings | python -m json.tool | grep value) 

,然後打印它們彼此相鄰。比如用:

echo "$IDs = $Values" 

但空空間似乎造成困難。我也嘗試通過使用awksed來削減回覆,但我不熟悉這些工具,也沒有成功。

有人更熟悉切割文本請幫助我。先謝謝你。

+0

看看http://stackoverflow.com/questions/12934699/selecting-fields-from-json-output –

回答

0

您可以使用jq解析JSON:

curl https://api.cloudflare.com/client/v4/zones/xxxx/settings | \ 
    jq '.result | map({(.id):.value}) | add' 

它提供:

{ 
    "always_online": "on", 
    "server_side_exclude": "on", 
    "sha1_support": "off", 
    "sort_query_string_for_cache": "off", 
    "ssl": "flexible" 
} 

如果要提取一個字段的值,爲server_side_exclude

curl https://api.cloudflare.com/client/v4/zones/xxxx/settings | \ 
    jq -r '.result | map({(.id):.value}) | add | .server_side_exclude' 

我用於解析的輸入是here

+0

令人驚歎!謝謝隊友,我一直在用** jq **測試過去的一個半小時,無法弄清楚正確的語法。非常感謝,這完全解決了我的問題。 –