Groovy Goodness: Turn A Map Or List As String To Map Or List
In a previous post we learned how to use the toListString
or toMapString
methods.
With these methods we create a String representation of a List
or Map
object.
With a bit of Groovy code we can take such a String
object and turn it into a List
or Map
again.
In the following code snippet we turn the String
value [abc, 123, Groovy rocks!]
to a List
with three items:
// Original List with three items.
def original = ['abc', 123, 'Groovy rocks!']
// Create a String representation:
// [abc, 123, Groovy rocks!]
def listAsString = original.toListString()
// Take the String value between
// the [ and ] brackets, then
// split on , to create a List
// with values.
def list = s2[1..-2].split(', ')
assert list.size() == 3
assert list[0] == 'abc'
assert list[1] == '123' // String value
assert list[2] == 'Groovy rocks!'
We can do something similar for a String
value representing a map structure:
// Original Map structure.
def original = [name: 'mrhaki', age: 42]
// Turn map into String representation:
// [name:mrhaki, age:42]
def mapAsString = original.toMapString()
def map =
// Take the String value between
// the [ and ] brackets.
mapAsString[1..-2]
// Split on , to get a List.
.split(', ')
// Each list item is transformed
// to a Map entry with key/value.
.collectEntries { entry ->
def pair = entry.split(':')
[(pair.first()): pair.last()]
}
assert map.size() == 2
assert map.name == 'mrhaki'
assert map.age == '42'
Written with Groovy 2.4.7.