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
}
]