Как преобразовать объект HTML5 FormData в JSON? Без JQuery и обработки вложенных свойств в FormData как объект.
Работавший для меня
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);
Оскорбительная острота!
Array.from(fd).reduce((obj, [k, v]) => ({...obj, [k]: v}), {});
Сегодня я узнал, что Firefox имеет объектную поддержку распространения и массив destructuring!
Если следующие объекты удовлетворяют Ваши потребности, Вы находитесь в удаче:
[['key','value1'], ['key2','value2']
(как то, что FormData дает Вам) в ключ-> объект значения как {key1: 'value1', key2: 'value2'}
и преобразование это к строке JSON. Вот код, в котором Вы будете нуждаться:
const data = new FormData(document.querySelector('form'));
const json = JSON.stringify(Array.from(data).reduce((o,[k,v])=>(o[k]=v,o),{}));
Hope это помогает кому-то.
В 2019 этот вид задачи стал суперлегким.
JSON.stringify(Object.fromEntries(formData));
Object.fromEntries
: Поддерживаемый в Chrome 73 +, Firefox 63 +, Safari 12.1