Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将groovy映射转换为json_Groovy_Jenkins Pipeline_Jenkins Groovy - Fatal编程技术网

如何将groovy映射转换为json

如何将groovy映射转换为json,groovy,jenkins-pipeline,jenkins-groovy,Groovy,Jenkins Pipeline,Jenkins Groovy,我在Jenkins管道中有以下代码: stage ("distribution"){ steps{ script{ def rules = [ service_name: "core", site_name: "*", city_n

我在Jenkins管道中有以下代码:

stage ("distribution"){
            steps{
                script{
                    def rules = [
                            service_name: "core", 
                            site_name: "*", 
                            city_name: "*", 
                            country_codes: ["*"]
                ]
                    amd_distribution_distribute_bundle distribution_rules: rules
                    }
                }
            }
如您所见,这是一个映射参数。如何使用Groovy代码将其转换为JSON文件?最后应该是这样的:

{
  "distribution_rules": [
    {
      "service_name": "core*",
      "site_name": "*",
      "city_name": "*",
      "country_codes": ["*"]
    }
  ]
}
我尝试了以下命令,但无效:

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)
}

无需在
amd\u distribution\u distribution\u bundle.groovy
文件中混合使用
JsonBuilder
JsonOutput
JsonOutput.toJson(map)
方法获取一个常规的
map
,并将其转换为等价的JSON对象。默认情况下,它创建一个平面单行文件。如果希望得到所谓的漂亮打印,则需要使用组合的
JsonOutput.prettyPrint(JsonOutput.toJson(map))

平面印刷
import groovy.json.JsonOutput
def调用(映射参数){
def分配规则=参数。分配规则
writeFile文件:“rootKey”,文本:JsonOutput.toJson([distribution\u rules:[distribution\u rules]]))
}
输出:

$ cat rootKey
{"distribution_rules":[{"service_name":"core","site_name":"*","city_name":"*","country_codes":["*"]}]}%    
$ cat rootKey
{
    "distribution_rules": [
        {
            "service_name": "core",
            "site_name": "*",
            "city_name": "*",
            "country_codes": [
                "*"
            ]
        }
    ]
}%     
漂亮的印花
import groovy.json.JsonOutput
def调用(映射参数){
def分配规则=参数。分配规则
writeFile文件:“rootKey”,文本:JsonOutput.prettyPrint(JsonOutput.toJson([distribution\u rules:[distribution\u rules]]))
}
输出:

$ cat rootKey
{"distribution_rules":[{"service_name":"core","site_name":"*","city_name":"*","country_codes":["*"]}]}%    
$ cat rootKey
{
    "distribution_rules": [
        {
            "service_name": "core",
            "site_name": "*",
            "city_name": "*",
            "country_codes": [
                "*"
            ]
        }
    ]
}%     

没有意识到我应该在groovy文件中按照附件
def json=JsonOutput.toJson([distribution\u rules:rules])
写什么,然后将
json
写到文件该代码用于管道或groovy?只需将语法更正为:JsonOutput.toJson([distribution\u rules:rules])