复杂JSON转FormData(递归 Json 对象 亲测可用)

/*
复杂json转为FormData
parent:key值,data:数据值,form:FormData实例
使用:JsonToFormData("", a, null);
*/
function JsonToFormData(parent, data, form) {
form = form || new FormData();
//循环传入的值转换formData
let index = 0;
Object.keys(data).forEach((key) => {
let val = data[key];
// console.log(key, typeof val, val.length);
if (val == null) {
let pk = parent ? `${parent}[${key}]` : key;
form.append(pk, NVL(val, ""));
}
else if (typeof val === "object") {
if (val.length == 0) { }
else if (val.length >= 1) {
//数组
let pk = parent ? `${parent}[${key}]` : key;
JsonToFormData(pk, val, form);
} else {
//纯对象
let pk = parent ? `${parent}[${key}]` : key;
JsonToFormData(pk, val, form);
}
} else {
let pk = parent ? `${parent}[${key}]` : key;
form.append(pk, NVL(val, ""));
}
index++;
});
if (parent == "") return form;
}


function NVL(obj, newValue) {
return (obj === null || obj === undefined) ?
(newValue ? newValue : "") : obj;
}

 

 

var params = {
a: 1, b: "", c: [1, 2, 4, {c1:"c111"}], d: { e: 5 }, f: [{ f1: "11" }, { f1: "22" }]
};

//使用
var r = JsonToFormData("",params, null);

//打印转换后的结果
for (var [key, value] of r) {
console.log(key, value);
}

posted @ 2024-08-20 15:48  wolfsocket  阅读(17)  评论(0编辑  收藏  举报