【问题标题】:Neither JsonOutput.toJson or writeJSON is producing strings with quotes(JSON)JsonOutput.toJson 或 writeJSON 都不会生成带引号的字符串(JSON)
【发布时间】:2020-11-04 11:42:50
【问题描述】:

我正在尝试将 jenkinsfile 中的地图转换为我正在使用的 json

def pullRequestData = [
        title: "Deployment-to-SIT",
        description: "Pull request from",
        state: "OPEN",
        open: "true",
        closed: "false",
        fromRef: [
            id: "refs/heads/${branchjsonObj.displayId}",
            repository: [
                slug: "${reposlug}",
                name: "null",
                project: [
                    key: "${projectkey}"
                ]
            ]
        ]
]
def jsonmap = JsonOutput.toJson(pullRequestData)
echo ${jsonmap}

以 json 格式提供输出,但没有字符串,

{title:Deployment-to-SIT,description:Pull request from,state:OPEN,open:true,closed:false,fromRef:{id:refs/heads/deployment-to-SIT,repository:{slug: argocd-sample-chart,name:null,project:{key:TD}}}}

但我需要的输出是

{"title":"Deployment-to-SIT","description":"Pull request from","state":"OPEN","open":"true","closed":"false", "fromRef":{"id":"refs/heads/deployment-to-SIT","re​​pository":{"slug":"argocd-sample-chart","name":"null","project": {"key":"TD"}}}

也试过了,

def jsonpullRequestData = this.steps.writeJSON(file: 'jsonmap.json', json: pullRequestData)

但行为是相同的,o/p 没有引号。任何帮助将不胜感激。

【问题讨论】:

  • 这是不正确的 json:{ "a" : "b",{"c" : "d"}}。这是不正确的代码:def map = [a : "b",[c : "d"]]。可能这是 jenking 允许您使用此代码的错误,但在 groovy 中这是错误的代码。
  • @daggett 请现在检查问题,如果不正确请告诉我
  • 我没有从你的代码中看到 map 参数的值是什么,你把它放在哪里。实际上,这两种变体都应该产生正确的 json。因此,请质疑您传递给这些变体的内容。
  • @daggett 感谢您的回复,请查看现在更新的问题
  • 应该是echo jsonmap。您能否添加结果的屏幕截图。

标签: json groovy jenkins-pipeline


【解决方案1】:

根据您的要求,您可以直接使用$pullRequestData.toString() 方法获取带引号的字符串格式,而不是使用json groovy lib..

【讨论】:

  • 但是我无法将我的数据定义为地图,我需要 JSON 作为输出。
猜你喜欢
  • 2015-01-05
  • 2018-03-21
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 2012-12-10
  • 1970-01-01
相关资源
最近更新 更多