首页 > 解决方案 > 如何在 JavaScript 中将 Request 对象转换为可字符串化的对象?

问题描述

使用Object类似entriesand 的方法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});

标签: javascriptobjectrequeststringify

解决方案


你可以尝试这样的事情:

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']);

推荐阅读