Reputation: 43
How to take in key/value pair values of groovy map and loop into JSON array elements in groovy?.
For example:
Input:
def childmap = ["data1": "123", "data2": "234", "data3": "456"]
def childmap2= ["data4": "123", "data5": "234", "data6": "456","date7":"676"]
def parentmap= ["Key1":"Value1","Key2":"Value2","Key3":childmap,"key4":childmap2]
Expected JSON Output:
{
"Json":{
"Key1":"Value1",
"Key2":"Value2"
"key3":[
{
"Name": "data1",
"ID": "123"
},
{
"Name": "data2",
"ID": "234"
},
{
"Name": "data3",
"ID": "456"
}
],
"key4":[
{
"Name": "data4",
"ID": "123"
},
{
"Name": "data5",
"ID": "123"
},
{
"Name": "data6",
"ID": "234"
},
{
"Name": "data7",
"ID": "456"
}
]
}
}
Upvotes: 1
Views: 8464
Reputation: 1272
This works for your example. This won't work if you've got deeper nesting.
def newmap = parentmap.collectEntries { key, value ->
[key, (value instanceof Map) ? value.collect {key2, value2 -> [Name: key2, ID: value2]} : value]}
def builder = new JsonBuilder([Json : newmap])
println builder.toPrettyString()
Upvotes: 2