2017-02-21 68 views
-1

我有一個GET curl命令,它與API對話並返回如下所示的網絡列表。我希望能夠使用BASH或Python提取這些信息。序列化來自捲曲命令的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", 
     } 
    ] 

什麼是提取每個網絡的信息,同時保持組合在一起的信息(爲{}每個實例),這樣我可以提取/分配變量,做每一個網絡上工作的最好方法?

例如,特里披薩id: L_XXFS的價值必定知道它連接到特里比薩餅,而不是其他任何網絡。

我每次都會收到不同數量的網絡返回的網絡,因此無法進行硬編碼。

+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'。 | length',然後將該值賦給TOTAL_NETWORKS,然後使用curl來遍歷網絡。 jq -r'。[''$ i''']> networkvalues.txt'在'for'循環中。我通過在文件上使用'sed'來分配值。 – jagdpanzer