function serialize(data) {
var formEntries = new FormData(data).entries();
var dataArr = Object.assign(Array.from(formEntries, ([x, y]) => ({ [x]: y })));
var json = {};
var emptyValueKey = [];
for (var key in dataArr) {
if (dataArr.hasOwnProperty(key)) {
var dataItem = dataArr[key];
var kn = Object.keys(dataItem)[0];
//检测是否数组
if (/\[/g.test(kn)) {
var arrInfo = kn.match(/(\w+)/g)
if (!json[arrInfo[0]]) {
json[arrInfo[0]] = []
}
if (!json[arrInfo[0]][arrInfo[1]]) {
json[arrInfo[0]][arrInfo[1]] = {}
}
json[arrInfo[0]][arrInfo[1]][arrInfo[2]] = dataItem[kn]
//检测是否子对象
} else if (/\./g.test(kn)) {
var objName = kn.match(/\w+/g)[0];
var objSubName = kn.match(/\w+/g)[1];
if (!json[objName]) {
json[objName] = {}
}
json[objName][objSubName] = dataItem[kn]
} else {
//普通处理
json[kn] = dataItem[kn]
}
//空字符检测
if (!dataItem[kn] ) {
emptyValueKey.push(kn)
}
}
}
return { json, emptyValueKey };
}复制代码
转载于:https://juejin.im/post/5c72d262f265da2d914d945a