SOURCE

const user = {
    name: 'lixiang',
    age:18,
    address: '南京',
    phone: '88888888'
}

function objectToFormData (obj, form, namespace) {
  const fd = form || new FormData();
  let formKey;
  for(var property in obj) {
      if(obj.hasOwnProperty(property)) {
        let key = Array.isArray(obj) ? '[]' : `[${property}]`;
        if(namespace) {
          formKey = namespace + key;
        } else {
          formKey = property;
        }
        // if the property is an object, but not a File, use recursivity.
        if(typeof obj[property] === 'object' && !(obj[property] instanceof File)) {
          objectToFormData(obj[property], fd, formKey);
        } else {
          // if it's a string or a File object
          fd.append(formKey, obj[property]);
        }
      }
    }
  return fd;
}
console.log('json:', user)
const form_data_user = objectToFormData(user)
console.log('formData:', form_data_user)
console.log(form_data_user.get('name'))

const channel = {
        backup_file_path: "www/abc.mp4",
        channel_id: "123456789",
        hls_url: "www.hls.com",
        name: "我是name",
        output: {
          template_id: "sd",
          water_mark: {url: "水印", position: 1}
        },
        playlen: 168,
        rtmp_url: "rtmp.com",
        server_id: "server123",
        source_url: "www.source.com",
      }

const channelFormData = objectToFormData(channel)
for (var [a, b] of channelFormData.entries()) {
    console.log('key:',a)
    console.log('value:', b)
 } 
console 命令行工具 X clear

                    
>
console