如何使用js/vue处理formData数据,转化为json数据格式
前端传到后端的数据格式为formData,在浏览器控制台查看到的数据为:
platform: pcweb
formData[runtime]: 0.067
formData[status]: Y
formData[code]: 200
formData[msg]:
formData[data][0][a]: 6984
formData[data][0][b]: 1399
formData[data][0][c]: 你做饭好吃吗?
formData[data][0][d]: 0
formData[data][0][e]: 0
formData[data][0][f]: 1
formData[data][0][g][0][url]: ""
formData[data][1][a]: 6984
formData[data][1][b]: 1399
formData[data][1][c]: 你做饭好吃吗?
formData[data][1][d]: 0
formData[data][1][e]: 0
formData[data][1][f]: 1
formData[data][1][g][0][url]: ""
...
有的时候需要看传到后端的数据是否有问题,因此想自己写一个小工具,能够把formData格式转换为json格式,查了很多formData转json
的例子,都是在请求之前使用formData对象进行转换。前端使用vue+element-ui来进行开发
尝试1:
const formData = []
// 截取字符串
const array = str.split("\n")
// 遍历
arrayStr.forEach(function (item,index) {
eval(item)
})
把数组元素当做是赋值语句,使用evel()
函数去执行代码,结果因为文本信息里的下标,例如:formData[runtime]
,它会把runtime
识别成一个变量,因此无法继续往下执行。
尝试2:
有了尝试1的思路,就想着把大括号内的数组下标加上引号,但是依然提示有异常;
尝试3:
后端有现成的php的方法,但是每次都要复制粘贴,然后打印,很不友好,仿照着用js的方式去写,可是自己前端的技术比较菜且js里没有php &$
这样的用法,因此也是卡在了快结束的阶段。
因此,小伙伴们有没有什么想法和思路能够让上面的文本信息转化为:
{
"platform": "pcweb",
"runtime": "",
"formData":{
"data": [
{
"a":1,
"b":2
...
},
{
"a":1,
"b":2
...
}
}
}
找到了个比较完美的方法,利用 lodash 的 _.set
旧的内容 👇
效果不是很完美,数组会被显示成对象,下面那个方法来自 javascript - Convert HTML form-data to nested JSON - Stack Overflow