2014-02-18 35 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