2014-02-18 113 views
0

我做我的bash腳本以下捲曲請求獲得我的構建一個覆蓋報告解析JSON:在執行卷曲

codeCoverage=$(curl -s $url/job/$jobname/$lastBuildNo/cobertura/api/json?depth=2) 

這將返回一個JSON效應初探看起來像這樣:

{ 
"results": { 
    "children": [ 
     { 
      "children": [ 
       {} 
      ], 
      "elements": [ 
       {}, 
       {} 
      ], 
      "name": "com.test.web" 
     }, 
     { 
      "children": [ 
       {} 
      ], 
      "elements": [ 
       {}, 
       {} 
      ], 
      "name": "com.test.web.filters" 
     } 
    ], 
    "elements": [ 
     { 
      "name": "Classes", 
      "ratio": 37.75 
     }, 
     { 
      "name": "Conditionals", 
      "ratio": 11.63969 
     }, 
     { 
      "name": "Files", 
      "ratio": 42.70073 
     }, 
     { 
      "name": "Lines", 
      "ratio": 16.937233 
     }, 
     { 
      "name": "Methods", 
      "ratio": 23.67906 
     }, 
     { 
      "name": "Packages", 
      "ratio": 50 
     } 
    ], 
    "name": "Cobertura Coverage Report" 
} 

}

我在

"name": "Lines", 
"ratio": 16.937233 
只是有興趣

我可以解析文本,一旦我得到它並提取該值,但有什麼辦法可以在我發出curl請求時獲取該值嗎?

+0

你的意思是輸出將是:'行,16.937233'? – BMW

+0

理想情況下,我只想要16.937233 –

+0

您的json文件在第9行無效。 – kev

回答

2

請使用JSON精彩UTIL jq

jq -r '.results.elements[] | select(.name=="Lines").ratio' input.json 
+0

+1良好的知識共享。 – BMW