微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用node-fetch

如何解决使用node-fetch

我正在尝试从网站获取原始数据并将其转换为JSON,但是问题是数据使用单引号而不是双引号,这会导致错误

UnhandledPromiseRejectionWarning:FetchError:(WEBSITE_LINK)处的json响应正文无效,原因:位置1的JSON中出现意外令牌'

如果在浏览器中打开页面,则数据如下所示: {'test': True,'number': 0}

在使用以下代码将其解析为JSON之前,如何将单引号转换为双引号?

let url = `WEBSITE_LINK`;
let settings = { method: "Get" };
fetch(url,settings)
   .then(res => res.json())
   .then((json) => {
         console.log(json.test)
         console.log(json.number)
    });

解决方法

您可以使用js字符串replace方法来手动解析返回的字符串。

let url = `WEBSITE_LINK`;
let settings = { method: "Get" };
fetch(url,settings)
   .then(res => res.text())
   .then((text) => {
         const json = JSON.parse(text.replace(/'/g,'"'));
         console.log(json.test);
         console.log(json.number);
    });
,

使用 String 构造函数将响应转换为字符串,然后应用replace方法。

let url = `WEBSITE_LINK`;
let settings = {
  method: "Get"
};
fetch(url,settings)
  .then(res => {
    const text = String(res.text()).replace(/'/g,'"');
    return JSON.parse(text);
  })
  .then((json) => {
    console.log(json.test)
    console.log(json.number)
  });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。