Technipelago Blog Stuff that we learned...
Parse query string with Groovy
Publicerad den 31 Jan 2012
This little piece of Groovy code transforms a URL query string into a Map
One day I needed to parse a URL query string outside of a web container using only Groovy. I was surprised there was no standard was to do this and I could not find a small convenient library to use. So I rolled my own.
This is what I came up with:
// Define a complex query to test with.
def url = new URL("http://www.google.com/" +
"?sclient=psy-ab&hl=sv&site=&source=hp&" +
"q=parse+query+string+groovy&pbx=1&" +
"oq=parse+query+string+groovy&aq=f&aqi=&aql=&gs_sm=e&" +
"gs_upl=2640l7169l0l7417l25l14l0l11l11l0l102l616l13.1l25l0&" +
"bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=41e3a896b66de401&" +
"biw=1368&bih=1010")
def map = url.query.split('&').inject([:]) {map, kv-> def (key, value) = kv.split('=').toList(); map[key] = value != null ? URLDecoder.decode(value) : null; map }
assert map.q == "parse query string groovy"
Works great! So let's add this method to the URL class
URL.metaClass.queryAsMap = {
if(!delegate.query) return [:]
delegate.query.split('&').inject([:]) {map, kv ->
def (key, value) = kv.split('=').toList()
if(value != null) {
map[key] = URLDecoder.decode(value)
}
return map
}
}
« Back
