Javascript serializare formular în obiect


Am un formular cu numele 'config[display][x]', 'config[display][y]', 'config[port]',..., sau pot crea un alt format. și vreau să-l serializ în obiect JS astfel

{config:
    display : {x : 'value', y : 'value'},
    port : 'value'
}

Cineva știe soluțiile existente pentru a face asta?

P.S. Pot serializa formularul cu .serializeArray() din jQuery, dar voi avea un array cu hash-uri simple {name: name, value: value}. Dar cum să creez un obiect?

Răspuns #1

Vezi biblioteca mea https://github.com/serbanghita/formToObject - există și o comparație cu soluțiile existente.

var myFormObj = formToObject('myFormId');
/* 
  console.log(myFormObj);
  {
    saveSettings: 'Save',
    name: 'Serban',
    race: 'orc',
    settings: {
       input: 'keyboard',
       video: {
          resolution: '1024x768',
          vsync: 'on'
       }
    }
  }
*/

Răspunsul #2

Am folosit .serializeObject() de la Ben Almans și a funcționat.

http://benalman.com/projects/jquery-misc-plugins/#serializeobject

Codul este mic și ușor:

$.fn.serializeObject = function(){
    var obj = {};

    $.each( this.serializeArray(), function(i,o){
        var n = o.name,
        v = o.value;

        obj[n] = obj[n] === undefined ? v
            : $.isArray( obj[n] ) ? obj[n].concat( v )
            : [ obj[n], v ];
    });

    return obj;
};