Как (полностью) преобразовать строку запроса в объект JSON?

Если у меня есть следующая форма :

<form>
  <input name="foo" value="bar">
  <input name="hello" value="world">
  <input name="animals[]" value="panda">
  <input name="animals[]" value="koala">
  <input name="car[make]" value="Honda">
  <input name="car[origin]" value="Japan">
</form>

Я не хочу использовать $ ("форма").serialize () :

foo=bar&hello=world&animals%5B%5D=panda&animals%5B%5D=koalacar&%5Bmake%5D=Honda&car%5Borigin%5D=Japan

Вместо этого я хочу следующее:

{"foo":"bar", "hello":"world", "animals":["panda", "koala"], "car":{"make":"Honda", "origin":"Japan"}}

Насколько я понимаю, для этого использовался jQuery, но они переключили метод serialize на возврат строки запроса в стиле GET. Есть ли простой способ получить желаемый результат?


РЕДАКТИРОВАТЬ

Я обновил свой исходный вопрос, включив в него примеры car [make] и car [origin] . Следует предположить, что ввод foo [bar] [baz] или foo [bar] [baz] [bof] также может появиться в форме.

Кроме того, указанные ключи с числовой индексацией, например foo [0] = a , foo [1] = b , foo [4] = c ] следует сохранить, например,

{ ... "foo":["a", "b", undefined, undefined, "c"] ... }
6
задан maček 1 December 2011 в 18:41
поделиться