Version compatible con implementaciones modernas de JavaScript (que implementen Array.reduce más precisamente):
Código Javascript
:
Ver originalvar t = "a[]=1&a[]=2&a[]=3&a[]=5&country=PE&otravariable=2011";
function d(str) {
return str.split('&').reduce(function(res, item) {
item = item.split('=');
var
key = item[0],
value= item[1] || null;
if(key.indexOf('[')) {
key = key.replace(/(\[|\])/g, '');
(res[key] = res[key] || []).push(value);
} else {
res[key] = value;
}
return res;
}, {});
}
var deserialized = d(t);
Obviamente es una version básica que no incluye recursividad.