javascript - 如何在 JavaScript 中将 Request 对象转换为可字符串化的对象?
问题描述
使用Object
类似entries
and 的方法keys
产生空数组。JSON.stringify
在浏览器中产生一个空对象,在 Node.js 中产生一个循环引用错误。
const request = new Request(
'https://example.com/send',
{
method: 'POST',
body: 'Hello world',
headers: {'x-planet-origin': 'Mars'},
},
);
const keys = Object.keys(request);
const values = Object.values(request);
const entries = Object.entries(request);
const string = JSON.stringify(request);
console.log({keys, values, entries, string, request});
解决方案
你可以尝试这样的事情:
const request = new Request(
'https://example.com/send',
{
method: 'POST',
body: 'Hello world',
headers: {'x-planet-origin': 'Mars'},
},
);
const str = JSON.stringify(request, ['bodyUsed',
'cache',
'credentials',
'destination','headers',
'integrity',
'isHistoryNavigation',
'keepalive',
'method',
'mode',
'redirect',
'referrer',
'referrerPolicy',
'signal',
'url']);
console.log(str);
//iterating dinamically
let props = [];
for(let prop in request){
props.push(prop);
}
const str2 = JSON.stringify(request, props);
console.log(str2);
如您所见,signal
空对象上的结果之类的属性,如果您不需要那种属性,这是一个可能的解决方案。
如果你仍然想要这样的属性,signal
你可以做这样的事情作为第二步:
const signal = JSON.stringify(request.signal, ['aborted', 'onabort']);
推荐阅读
- php - 从数据库请求数据并使用 if() 条件检查,但结果显示即使 if() 条件不满足
- react-native - 反应本机泛响应器设置边界,有时不工作
- bash - 无法在 LXC 容器内创建或触摸文件
- autodesk-forge - 我目前正在使用 Forge RCDB 和 MongoDB,但数据库中没有数据和成本 Breaddown,总是显示加载
- xpages - 使用 SSJS 在新窗口/选项卡中打开 URL
- c# - 我应该处理 X509Certificate2 吗?
- css - 如何使用 iconmoon.io 生成 Icon Font 类型的图标?
- linkedin - 通过 api.linkedin.com/v2/shares 检索共享的排序不正确
- r - 如何在向量中对表格的元素进行分组
- node.js - 错误:Tapable.plugin 已弃用。在 .hooks 上使用新的 API