Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams
@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

But I get the following error:

ERROR: java.io.NotSerializableException: groovy.json.internal.LazyMap

To work around this, I have to create an entire method to perform an entire step. For instance, in a method, I would do the same as above, parse the information I want, and finally return it as a string.

This, however, presents another issue, especially if you wrap this method inside a withCredentials, which would then require another withCredentials.

I finally find a BETTER solution!

readJSON() method from the Jenkins "Pipeline Utility Steps" plugin as shown here:

https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#readjson-read-json-from-files-in-the-workspace

Here is a sample where we can finally ditch that ugly GROOVY JSONPARSE crap.

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
                I keep trying different variations of this: def props = readJson text: <the json string> but even with the simple example string, I always get an error: groovy.lang.MissingMethodException: No signature of method: Script1.readJSON() is applicable for argument types: (java.util.LinkedHashMap) values:  <the json string>
– Max Cascone
                Mar 17, 2021 at 19:28
                Try readJSON not readJson.  Make sure that the Pipeline Utility Steps plugin is installed.
– Earl Ruby
                Nov 2, 2021 at 20:37
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.