#jenkins #groovy #jenkins-pipeline #jenkins-groovy
#дженкинс #заводной #дженкинс-конвейер #дженкинс-groovy #groovy
Вопрос:
Здесь мы заменяем значение «dpidsha1» из 1234 на другое значение «abcd» в json conent, и мы пытаемся записать содержимое в формате json в файл «uselessfile.json» и распечатать содержимое файла «uselessfile.json»
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
def buildContent(){
def content = """
{
"app":{ },
"at":2,
"badv":[ ],
"bcat":[ ],
"device":[ {
"carrier":"310-410",
"connectiontype":3,
"devicetype":1,
"dnt":0,
"dpidmd5":"268d403db34e32c45869bb1401247af9",
"dpidsha1":"1234"
},
{
"carrier":"310-410",
"connectiontype":3,
"devicetype":1,
"dnt":0,
"dpidmd5":"268d403db34e32c45869bb1401247af9",
"dpidsha1":"1234"
}]
}"""
def slurped = new JsonSlurper().parseText(content)
def builder = new JsonBuilder(slurped)
builder.content.device.dpidsha1 = 'abcd'
println(builder.toPrettyString())
writeFile file: 'uselessfile.json', text: builder.toPrettyString(content)
File file = new File("uselessfile.json")
println "Below is the content of the file ${file.absolutePath}"
println uselessfile.json
ОШИБКА:
[Конвейер] Конец конвейера исключение, которое произошло: в поле com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
Вызвано: исключение java.io.NotSerializableException: groovy.json.JsonBuilder
Комментарии:
1.
jsonBuilder.toPrettyString(content)
должно бытьbuilder.toPrettyString(content)
2. При записи данных в uselessfile по-прежнему происходит сбой. файл в формате json. Я обновил вопрос.
Ответ №1:
Вы можете использовать конвейерную утилиту steps readJSON
и writeJSON
заархивировать свою цель следующим образом:
def buildContent(){
def content = """
{
"app":{ },
"at":2,
"badv":[ ],
"bcat":[ ],
"device":{
"carrier":"310-410",
"connectiontype":3,
"devicetype":1,
"dnt":0,
"dpidmd5":"268d403db34e32c45869bb1401247af9",
"dpidsha1":"1234"
}
}
"""
def jsonObj = readJSON text: content.trim()
jsonObj.device.dpidsha1 = 'abcd'
writeJSON file: 'uselessfile.json', json: jsonObj, pretty: 4
sh 'cat uselessfile.json'
}
Причина java.io.NotSerializableException: groovy.json.JsonBuilder
в том, что конвейер Дженкинс сохранит конвейер после сериализации. Но класс groovy.json.JsonBuilder
не реализован Serializable
, поэтому его нельзя сериализовать
Комментарии:
1. По-прежнему выдается ОШИБКА: такое поле не найдено: версия net.sf.json.JSONArray. Я обновил вопрос.