json數據類型轉換為formdata數據類型

2024年2月6日 23点热度 0人点赞

示例

JavaScript中,將JSON數據類型轉換為FormData類型通常是為了適應HTTP請求(尤其是POST請求)的multipart/form-data格式。下面是一個基本的步驟來演示如何將JSON對象轉換為FormData對象:

// 假設我們有一個JSON對象
const json = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3',
  // 如果有文件字段,這裡可能是個File或Blob對象
  fileField: null // 假設這是個文件對象
};
// 創建一個新的FormData實例
const formData = new FormData();
// 遍歷JSON對象並添加到FormData中
Object.keys(json).forEach(key => {
  const value = json[key];
  // 檢查值是否是File或Blob對象,如果是,則直接使用append
  if (value instanceof File || value instanceof Blob) {
    formData.append(key, value);
  } else {
    // 對於非文件字段,將字符串化後添加
    formData.append(key, String(value));
  }
});
// 如果你的JSON中有嵌套的對象,你可能需要遞歸處理這些對象
function recursiveJsonToFormData(jsonObject, formData, prefix = '') {
  for (let key in jsonObject) {
    let value = jsonObject[key];
    let combinedKey = prefix ? `${prefix}[${key}]` : key;
    if (value && typeof value === 'object' && !(value instanceof File || value instanceof Blob)) {
      recursiveJsonToFormData(value, formData, combinedKey);
    } else {
      formData.append(combinedKey, String(value));
    }
  }
}
// 使用遞歸函數處理復雜JSON結構
recursiveJsonToFormData(json, formData);
// 現在formData可以被用於Ajax請求或其他需要FormData的地方

註意,上述代碼示例中,對於簡單鍵值對,是將JSON對象的值直接轉化為字符。