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
});
我想获取存储在 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
});