如何解决如何在Jenkins文件中使用Groovy读取对象数组或空数组?
尝试使用Groovy脚本创建管道时无法解决以下错误。
java.lang.ClassCastException: org.jenkinsci.plugins.workflow.steps.EchoStep.message expects class java.lang.String but received class net.sf.json.JSONArray
我的脚本如下
#!groovy
import groovy.json.*
pipeline {
agent any
stages {
stage('Publish To Exchange') {
steps {
script{
def apiUrl = "https://something.com/login"
def payload = JsonOutput.toJson(["username":"username","password":"password"])
def response = sh (returnStdout: true,script: "curl -s --fail -H \"Content-Type: application/json\" -X POST ${apiUrl} -d '${payload}' ").trim()
def parsedJson = readJSON text: response
def token = parsedJson.access_token
echo token
def props = readJSON text: sh(returnStdout: true,script: "curl -s --fail -H \"authorization: Bearer $token\" https://something.com/assets?search=my-api")
echo props //error,output empty array or array of objects
}
}
}
}
}
在打印道具时出现错误。我也尝试了以下操作,但由于以下错误也失败了。
java.lang.ClassCastException: org.jenkinsci.plugins.workflow.steps.EchoStep.message expects class java.lang.String but received class java.util.ArrayList
....
def props = sh(returnStdout: true,script: "curl -s --fail -H \"authorization: Bearer $token\" https://something.com/assets?search=my-api")
def json = new JsonSlurper().parseText(props)
echo json
感谢您的帮助。 谢谢
解决方法
使用echo (json as String)
或println json
println
与echo
之间的区别:
println是groovy Object类的一种方法-它接受任何对象作为输入参数,并在需要时将其转换为字符串,并打印结果。
echo是jenkins管道的基本步骤之一,它需要字符串作为输入。因此,在使用它打印非字符串值之前-您必须将它们转换为字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。