I'm new to Groovy and I've a task. I have a Map looks like:
[sessionCampaignName:renins_KASKO_May23, sessionMedium:Yandex_banners, sessionSource:Media]
or
[sessionCampaignName:olv_May23, sessionTerm:greatjob]
How can i build a JSON based on map keys names + additional json property called date
like (for example lets take 1st case):
[
{
"name": "date"
},
{
"name": "sessionCampaignName"
},
{
"name": "sessionMedium"
},
{
"name": "sessionSource"
}
]
Tried with:
List dimensionsList = convertedMap.collect {dimensionName, dimensionValue ->
[
[
name: 'date'
],
[
name: dimensionName
]
]
}
String jsonDimensions = JsonOutput.toJson(dimensionsList)
But didn't reach what I expected to reach. Any tips?
Try as below-
def map = [sessionCampaignName: 'renins_KASKO_May23', sessionMedium: 'Yandex_banners', sessionSource: 'Media']
List dimensionsList = [['name': 'date']] + map.keySet().collect { key ->
['name': key]
}
/*
List dimensionsList = map.keySet().collect([[name: 'date']]) { key ->
[name: key]
}
*/
String jsonDimensions = new groovy.json.JsonBuilder(dimensionsList).toPrettyString()
println jsonDimensions
Output:
[
{
"name": "date"
},
{
"name": "sessionCampaignName"
},
{
"name": "sessionMedium"
},
{
"name": "sessionSource"
}
]