js普通对象转换成formData对象,并查看转换后的formData内容

因为接口的原因,需要提交 multipart/form-data 格式的数据,需要将js的普通对象转换成formData对象用于提交。

1.  对象中嵌套复杂类型

// 定义递归函数处理需要转换的对象
export const objectToFormData = (obj, formData) => {
  formData = formData || new FormData()

  for (let key in obj) {
       // hasOwnProperty 是 JavaScript 中的一个内置方法,用于判断一个对象是否拥有某个指定的属性,而不是继承自原型链的属性
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      let value = obj[key]

      if (value instanceof Array) {
        value.forEach((item) => {
          objectToFormData(item, formData)
        })
      } else if (value instanceof Object) {
        objectToFormData(value, formData)
      } else {
        formData.append(key, value)
      }
    }
  }
  return formData
}

在需要转换formData对象的组件内引入并调用

import { objectToFormData } from '@/utils/tool.js'

const obj = ref({
  name: 'John Doe',
  profile: {
    age: 30,
    city: 'New York'
  },
  list: [
    {
      name: 'zs',
      age: '18'
    },
    {
      name: 'ls',
      age: '18'
    }
  ]
}) // 假设对象中有嵌套的对象和数组

// 调用函数处理对象
obj.value = objectToFormData(obj.value)

可以通过以下方法查看转换后的formData对象内容

for (let [key, value] of obj.value.entries()) {
    console.log(key, value)
  }

2. 对象中无嵌套复杂类型

const obj = ref({
  name: 'John',
  age: '23',
  avatar: '112222222222'
})

const formData = new FormData()

 for (let key in obj.value) {
    formData.append(key, obj.value[key])
 }
// 如果对象中没有复杂类型数据只需要这么写就足够了,不过上述递归也会处理这种形式

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值