(function($) {
var methods = { setValue: function(path, value, obj) { if(path.length) { var attr = path.shift(); if(attr) { obj[attr] = methods.setValue(path, value, obj[attr] || {}); return obj; } else { if(obj.push) { obj.push(value); return obj; } else { return [value]; } } } else { return value; } } }; $.fn.serializeObject = function() { var obj = {}, params = this.serializeArray(), path = null; $.each(params, function() { path = this.name.replace(/\]/g, "").split(/\[/); methods.setValue(path, this.value, obj); }); return obj; };
})(jQuery);