オンラインで示すようにメソッドを作成しました:
@NonCPS
def parseJsonString(String jsonString) {
def lazyMap = new JsonSlurper().parseText(jsonString)
// JsonSlurper returns a non-serializable LazyMap, so copy it into a regular map before returning
def m = [:]
m.putAll(lazyMap)
return m
}
しかし、私は次のエラーを受け取ります:
エラー:Java.io.NotSerializableException:groovy.json.internal.LazyMap
これを回避するには、ステップ全体を実行するメソッド全体を作成する必要があります。たとえば、メソッドでは、上記と同じようにして、必要な情報を解析し、最後に文字列として返します。
ただし、これには別の問題があり、特にこのメソッドを「withCredentials」内にラップすると、別の「withCredentials」が必要になります。
ようやく、より良い解決策を見つけました!
次に示すように、Jenkinsの「Pipeline Utility Steps」プラグインのreadJSON()メソッド:
これは、醜いGROOVY JSONPARSEがらくたをやっと捨てることができるサンプルです。
node() {
stage("checkout") {
def jsonString = '{"name":"katone","age":5}'
def jsonObj = readJSON text: jsonString
assert jsonObj['name'] == 'katone' // this is a comparison. It returns true
sh "echo ${jsonObj.name}" // prints out katone
sh "echo ${jsonObj.age}" // prints out 5
}
}