javascript - 如何从 FormData 对象中获取嵌套对象 [object Object]

javascript - How to get nested object from a FormData object [object Object]

我想获取存储在 FormData 中的值的整个嵌套对象(包含所有属性)。 这可能吗?

例子

const formData = new FormData();
formData.append('k1', 123);
formData.append('k2', 'ABC');
formData.append('k3', {
  a: 1,
  b: '2'
});

data = {};
formData.forEach((value, key) => {
  console.log(`Key: ${key}`, {
    key,
    value,
    type: typeof(value),
    getResult: formData.get(key),
    getAllResult: JSON.stringify(formData.getAll(key))
  });

  data[key] = value;
});

console.warn('Final result', {
  data
});
.as-console-wrapper {
    max-height: 100% !important;
}

有没有一种方法可以在不使用 jQuery 或任何外部库的情况下捕获 k3 的键和值?

好的,所以这不是您想要的,但是可以了。如果你想为你的 k3 值传递一个对象,那么你需要先 stringify 它。然后你需要将它解析回一个你想使用它的对象。我已经更新了你上面的代码以将值字符串化,并且 尝试 在你的调试中将它解析回来(只是为了你可以看到它)

const formData = new FormData();
formData.append('k1', 123);
formData.append('k2', 'ABC');
formData.append('k3', JSON.stringify({
  a: 1,
  b: '2'
}));

data = {};
formData.forEach((value, key) => {
  console.log(`Key: ${key}`, {
    key,
    value,
    type: typeof(value),
    rawResult: formData.get(key),
    potentialObjResult: (function(val){
         let potential = undefined;
         try {
            potential = JSON.parse(val);
         } catch(ex){
             console.log('could not parse: <' + val + '> as JSON');
         }
         return potential;
     })(formData.get(key))
    });
  data[key] = value;
});

console.warn('Final result', {
  data
});