Как преобразовать FormData (Объект HTML5) к JSON

Как преобразовать объект HTML5 FormData в JSON? Без JQuery и обработки вложенных свойств в FormData как объект.

59
задан 3 January 2017 в 10:34

4 ответа

Работавший для меня

                var myForm = document.getElementById("form");
                var formData = new FormData(myForm),
                obj = {};
                for (var entry of formData.entries()){
                    obj[entry[0]] = entry[1];
                }
                console.log(obj);
0
ответ дан 1 November 2019 в 11:15

Оскорбительная острота!

Array.from(fd).reduce((obj, [k, v]) => ({...obj, [k]: v}), {});

Сегодня я узнал, что Firefox имеет объектную поддержку распространения и массив destructuring!

1
ответ дан 1 November 2019 в 11:15

Если следующие объекты удовлетворяют Ваши потребности, Вы находитесь в удаче:

  1. Вы хотите преобразовать массив массивов как [['key','value1'], ['key2','value2'] (как то, что FormData дает Вам) в ключ-> объект значения как {key1: 'value1', key2: 'value2'} и преобразование это к строке JSON.
  2. Вы нацелены на браузеры/устройства с последним интерпретатором ES6 или компилируете с чем-то как столпотворение.
  3. Вы хотите самый крошечный способ выполнить это.

Вот код, в котором Вы будете нуждаться:

const data = new FormData(document.querySelector('form'));
const json = JSON.stringify(Array.from(data).reduce((o,[k,v])=>(o[k]=v,o),{}));

Hope это помогает кому-то.

1
ответ дан 1 November 2019 в 11:15

В 2019 этот вид задачи стал суперлегким.

JSON.stringify(Object.fromEntries(formData));

Object.fromEntries : Поддерживаемый в Chrome 73 +, Firefox 63 +, Safari 12.1

33
ответ дан 1 November 2019 в 11:15

Другие вопросы по тегам:

Похожие вопросы: