Groovy Operators

Control Statements

Groovy File Handling

Groovy Error & Exceptions

Groovy Multithreading

Groovy Synchronization

Groovy - Handling JSON Arrays



Array Handling is a very common aspect of any programming language. In groovy, we can handle JSON arrays easily as when using JsonSlurper, a json array is converted into a groovy List instance automatically. In this chapter, we'll demonstrating scenarios of handling JSON arrays using JsonSlurper and JsonBuilder.

Parsing JSON Array using JsonSlurper

Example.groovy

import groovy.json.JsonSlurper

def jsonArrayText = '''
[
   {  "name": "Julie", "age": 32, "id": 1 },
   {  "name": "Henry", "age": 27, "id": 2 }
]
'''

def slurper = new JsonSlurper()

def employeesList = slurper.parseText(jsonArrayText)

// prints Java.util.ArrayList
println employeesList.getClass().name
// prints the list
println employeesList

Output

When we run the above program, we will get the following result.

java.util.ArrayList
[[age:32, id:1, name:Julie], [age:27, id:2, name:Henry]]

Here we can see that JSON array is converted to a List, and objects are converted to a Map.

Parsing Nested JSON Array using JsonSlurper

We can parse nested JSON arrays as well. JsonSlurper automatically converts them into nested lists as shown below −

Example.groovy

import groovy.json.JsonSlurper

def nestedArrayJsonString = '''
{
  "items": [
    [1, 2, 3],
    ["apple", "banana", "cherry"],
    [true, false]
  ]
}
'''

def jsonSlurper = new JsonSlurper()
def nestedData = jsonSlurper.parseText(nestedArrayJsonString)

// prints 2
println nestedData.items[0][1] 

// prints apple,banana,cherry 
println nestedData.items[1].join(',') 

Output

When we run the above program, we will get the following result.

2
apple,banana,cherry

Creating JSON Array using JsonBuilder

We can assign a groovy List to JsonBuilder content property to create a JSON array at root level.

Example.groovy

import groovy.json.JsonBuilder
import groovy.json.JsonOutput

def employees = [
   [  name: 'Julie', age: 32, id: 1 ],
   [  name: 'Henry', age: 27, id: 2 ]
]

def builder = new JsonBuilder()
builder.content = employees

def jsonOutput = JsonOutput.prettyPrint(builder.toString())
println jsonOutput

Output

When we run the above program, we will get the following result.

[
    {
        "name": "Julie",
        "age": 32,
        "id": 1
    },
    {
        "name": "Henry",
        "age": 27,
        "id": 2
    }
]

Or we can pass, the JSON array in the JsonBuilder constructor as shown below −

Example.groovy

import groovy.json.JsonBuilder
import groovy.json.JsonOutput

def employees = [
   [  name: 'Julie', age: 32, id: 1 ],
   [  name: 'Henry', age: 27, id: 2 ]
]

def builder = new JsonBuilder(employees)
def jsonOutput = JsonOutput.prettyPrint(builder.toString())
println jsonOutput

Output

When we run the above program, we will get the following result.

[
    {
        "name": "Julie",
        "age": 32,
        "id": 1
    },
    {
        "name": "Henry",
        "age": 27,
        "id": 2
    }
]
Advertisements