how to parse json using groovy

Viewed 122525

I want to parse JSON data which is coming in like:

{
   "212315952136472": {
      "id": "212315952136472",
      "name": "Ready",
      "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/195762_212315952136472_4343686_s.jpg",
      "link": "http://www.hityashit.com/movie/ready",
      "likes": 5,
      "category": "Movie",
      "description": "Check out the reviews of Ready on  http://www.hityashit.com/movie/ready"
   }
}

The code I am using is:

JSONElement userJson = JSON.parse(jsonResponse)
userJson.data.each {
    Urls = it.link
}

But I am not able to get anything assigned to Urls. Any suggestions?

5 Answers
def jsonFile = new File('File Path');
JsonSlurper jsonSlurper = new JsonSlurper();

def parseJson = jsonSlurper.parse(jsonFile)
String json = JsonOutput.toJson(parseJson)

def prettyJson = JsonOutput.prettyPrint(json)
println(prettyJson)

The thing with this unique number is a bit tricky.

If you know this value, easy

stage('Test Groovy JSON parsing') {
    steps {
        script {
            def userJson = readJSON file: 'myJsonFile.json'

            def keyList = userJson['212315952136472'].keySet()
            echo "${keyList}"   // ['id', 'name', 'picture', 'link', 'likes', 'category', 'description']
            
            echo "${userJson['212315952136472'].name}"  // Ready
            echo "${userJson['212315952136472'].link}"  // http://www.hityashit.com/movie/ready
        }
    }
}

If you don't know this number, you could walk through the JSON

userJson.each { key, value ->
    echo "Walked through key $key and value $value"
}

check also the documentation at Jenkins Read JSON from File

Related