2017-04-07 72 views
0

如何在groovy中使用FOR循環通過json file循環?我能夠做到這一點.each,但我處於一種情況/錯誤,我不能使用.each循環。在C風格的循環For循環而不是使用每個

正在讀取json文件並將其解析爲一個對象。

JSON的是這樣的:

{ 
    "workflows1": { 
     "name": "/wf_multifolder", 
     "file": "release1/wf_multifolder.XML", 
     "folderNames": { 
      "multifolder": "{{multifolder}}", 
      "agent1": "{{agentx}}" 
     } 
    }, 
    "workflows2": { 
     "name": "/wf_multifolder", 
     "file": "release1/wf_multifolder.XML", 
     "folderNames": { 
      "multifolder": "{{multifolder}}", 
      "agent1": "{{agentx}}" 
     } 
    } 
} 

注:我可以修改JSON文件,如果需要簡化流程。所有我正在嘗試做的是循環throgh並提取值按鍵。

+0

爲什麼你不能使用的呢? –

+0

因爲jenkins不喜歡每個...這個工具有一個限制。我會在這個 – OK999

回答

1

所以給出的JSON的字符串,像這樣:

def jsonText = '''{ 
    "workflows1": { 
     "name": "/wf_multifolder", 
     "file": "release1/wf_multifolder.XML", 
     "folderNames": { 
      "multifolder": "{{multifolder}}", 
      "agent1": "{{agentx}}" 
     } 
    }, 
    "workflows2": { 
     "name": "/wf_multifolder", 
     "file": "release1/wf_multifolder.XML", 
     "folderNames": { 
      "multifolder": "{{multifolder}}", 
      "agent1": "{{agentx}}" 
     } 
    } 
}''' 

你可以這樣做:

import groovy.json.* 

def json = new JsonSlurper().parseText(jsonText) 

for(entry in json) { 
    println "$entry.key has file $entry.value.file" 
} 

打印:

workflows1 has file release1/wf_multifolder.XML 
workflows2 has file release1/wf_multifolder.XML 
+0

上粘貼jira story#但是我想我需要使用'counter',這樣我才能遍歷say,workflow1和workflows2的值....等等。 – OK999

+0

Errr ....如代碼所示,它遍歷工作流1和2 –

+0

我認爲使用for in循環會導致CPS問題? – drewish