所以我正在嘗試使用 groovy 撰寫一個 Jenkins 作業來獲取一些資料 第 3 行之后的變數 answer 中的資料類似于
[
{
"endIpAddress": "11.21.115.9",
"id": "blabla1",
"name": "blabla",
"resourceGroup": "stg",
"startIpAddress": "11.12.115.9",
"type": "blablafirewallRules"
},
{
"endIpAddress": "1.2.15.9",
"id": "blabla2",
"name": "function1-blabla",
"resourceGroup": "stg",
"startIpAddress": "1.2.15.9",
"type": "blablafirewallRules"
},
{
"endIpAddress": "7.7.7.7",
"id": "blabla2",
"name": "function2-blabla",
"resourceGroup": "stg",
"startIpAddress": "7.7.7.7",
"type": "blablafirewallRules"
},
.
.
.
.
]
id 喜歡做的是構建一個串列或二維陣列來決議這個 json 并且它將保存 name 包含“function”的所有專案的所有 startipaddress,所以基于這個 JSON,資料應該是
desiredData[0] = [function1-blabla, 1.2.15.9]
desiredData[1] = [function2-blabla, 7.7.7.7]
直到現在我還沒有使用JsonSlurper,我正在操作文本并構建陣列,這是非常愚蠢的事情,因為我猜這就是 JSON 的全部內容。
import groovy.json.JsonSlurper
command = "az mysql server firewall-rule list --resource-group ${rgNameSrvr} --server-name ${BLA} --output json"
answer = azure.executeAzureCliCommand(command, "BLA")
def jsonSlurper = new JsonSlurper()
def json = new JsonSlurper().parseText(answer)
uj5u.com熱心網友回復:
def data = json.findAll{ it.name =~ /^function/ }.collectEntries{ [it.name, it.startIpAddress] }
上面的代碼回傳 map where key=name and value=ip
如果你想要 2dim 陣列:
def data = json.findAll{ it.name =~ /^function/ }.collect{ [it.name, it.startIpAddress] }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/415816.html
標籤:
上一篇:如何使用githubpullrequestbuilder通過jenkinsjobdsl配置JenkinspipelineJob?
