После некоторого поиска "collectEntries ()" - волшебная вещь, которую нужно использовать, она создает элемент карты. Работайте так же, как «collect ()», который создает список. Так дано
def params = "a1=b1&a2=b2&a3&a4=&a5=x=y"
однострочник
map = params.tokenize("&").collectEntries{
it.split("=",2).with{
[ (it[0]): (it.size()<2) ? null : it[1] ?: null ]
}
}
, который создает
map = [a1:b1, a2:b2, a3:null, a4:null, a5:x=y]
В зависимости от того, как вы хотите обрабатывать случаи «a3» и «a4 =», вы также можете использовать несколько более короткую версию
...
[ (it[0]): (it.size()<2) ? null : it[1] ]
...
и тогда вы получите это:
map = [a1:b1, a2:b2, a3:null, a4:, a5:x=y]