ari*_*lma 5 groovy jenkins-groovy jenkins-pipeline
我在 Jenkins 管道中有以下代码:
stage ("distribution"){
steps{
script{
def rules = [
service_name: "core",
site_name: "*",
city_name: "*",
country_codes: ["*"]
]
amd_distribution_distribute_bundle distribution_rules: rules
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它是一个地图参数。如何使用 Groovy 代码将其转换为 JSON 文件?最后它应该是这样的:
{
"distribution_rules": [
{
"service_name": "core*",
"site_name": "*",
"city_name": "*",
"country_codes": ["*"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下命令,但没有帮助:
import groovy.json.JsonBuilder
import groovy.json.JsonOutput
def call(Map parameters)
{
def DISTRIBUTION_RULES = parameters.distribution_rules
def json = new groovy.json.JsonBuilder()
json rootKey: "${DISTRIBUTION_RULES}"
writeFile file: 'rootKey', text: JsonOutput.toJson(json)
}
Run Code Online (Sandbox Code Playgroud)
无需在您的文件中混合JsonBuilder和。该方法采用正则并将其转换为等效的 JSON 对象。默认情况下,它会创建一个扁平的单行文件。如果您希望获得所谓的漂亮打印,则需要使用.JsonOutputamd_distribution_distribute_bundle.groovyJsonOutput.toJson(map)MapJsonOutput.prettyPrint(JsonOutput.toJson(map))
import groovy.json.JsonOutput
def call(Map parameters) {
def DISTRIBUTION_RULES = parameters.distribution_rules
writeFile file: 'rootKey', text: JsonOutput.toJson([distribution_rules: [DISTRIBUTION_RULES]])
}
Run Code Online (Sandbox Code Playgroud)
输出:
$ cat rootKey
{"distribution_rules":[{"service_name":"core","site_name":"*","city_name":"*","country_codes":["*"]}]}%
Run Code Online (Sandbox Code Playgroud)
$ cat rootKey
{"distribution_rules":[{"service_name":"core","site_name":"*","city_name":"*","country_codes":["*"]}]}%
Run Code Online (Sandbox Code Playgroud)
输出:
$ cat rootKey
{
"distribution_rules": [
{
"service_name": "core",
"site_name": "*",
"city_name": "*",
"country_codes": [
"*"
]
}
]
}%
Run Code Online (Sandbox Code Playgroud)