jquery serialize input with arrays jquery serialize input with arrays json json

jquery serialize input with arrays


I made a recursive function/plugin to do exactly this:

$.fn.serializeControls = function() {  var data = {};  function buildInputObject(arr, val) {    if (arr.length < 1)      return val;      var objkey = arr[0];    if (objkey.slice(-1) == "]") {      objkey = objkey.slice(0,-1);    }      var result = {};    if (arr.length == 1){      result[objkey] = val;    } else {      arr.shift();      var nestedVal = buildInputObject(arr,val);      result[objkey] = nestedVal;    }    return result;  }  $.each(this.serializeArray(), function() {    var val = this.value;    var c = this.name.split("[");    var a = buildInputObject(c, val);    $.extend(true, data, a);  });    return data;}$("#output").html(JSON.stringify($('#myform').serializeControls(), null, 2));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><form id="myform" action="" method=""> <input type="text" name="name[1][first]" value="beep"> <input type="text" name="name[1][second]" value="bloop"> <input type="text" name="name[2][first]" value="derp">   <input type="text" name="foo" value="bar">  </form><pre id="output"></pre>