节点从网址获取json

最大888

我正在尝试在Nodejs中获取并解析下面返回的JSON。看来问题在于节点代码正在尝试解析包含换行符的JSON字符串,但是我不确定如何避免这种情况,以及为什么提取在chrome devtools中起作用。我猜问题出在我对https请求的简单了解,所以如果有人可以解释出什么问题了,我将不胜感激。

const url = "https://beta.charitycommission.gov.uk/umbraco/api/charityApi/getSearchResults?searchText=&pageNumber=1&contextId=1126&onlyShow=&&&&&&&"

我可以在域上打开的chrome devtools中成功运行此程序。另外,JSON似乎会自动解析为一个对象,这是我没有想到的。

fetch(url).then(res => res.json()).then(json => console.log(json.pageItems))

我已经在节点中尝试了以下方法,但是没有任何效果。

const fetch = require("node-fetch");
await fetch(url).then(res => res.json()); // Unexpected token  in JSON at position 0

const rp = require('request-promise-native');
const json = await rp({uri: url}) // returns JSON string with newline characters
JSON.parse(json) // Unexpected token  in JSON at position 0
防区

问题是您的JSON文件以UTF-8 BOM格式保存。

这是什么意思?

您的文件以所谓的字节顺序标记字符U+FEFF(零宽度不间断空格)开头

这是不可见的(宽度为零),但仍然存在,并且JSON解释器无法解析它。

怎么解决?

  1. 保存不带BOM的JSON数据,或
  2. 使用res.text()然后JSON.parse(text.slice(1))删除主角:

    fetch(url)
    .then(res => res.text())
    .then(text => JSON.parse(text.slice(1)))
    .then(json => console.log(json.pageItems))
    

为什么它可以在Chrome中使用?

Chrome会自动从所有提取/下载的文件中删除BOM字符,以避免类似的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从网址获取Json数据

来自分类Dev

节点JS请求获取原始网址

来自分类Dev

编码网址以获取JSON数据

来自分类Dev

如何使用节点js获取上层视频的cloudinary网址???

来自分类Dev

使用php从json网址获取数据?

来自分类Dev

d3.js从网址获取JSON

来自分类Dev

AFNetworking获取json值。网址无效

来自分类Dev

d3.js从网址获取JSON

来自分类Dev

从文本框中获取JSON网址?

来自分类Dev

Java:从http网址获取json(使用JSON.org API)

来自分类Dev

Java:从http网址获取json(使用JSON.org API)

来自分类Dev

节点js更改网址

来自分类Dev

使用Jquery从Json对象获取父节点

来自分类Dev

如何使用jquery获取Json的节点?

来自分类Dev

在Scala中获取Json头节点值

来自分类Dev

如何使用jquery获取Json的节点?

来自分类Dev

使用 Java JsonPath 获取 JSON 父节点

来自分类Dev

节点获取 JSON 数据不可迭代

来自分类Dev

通过API网址将Json文件获取到Google Cloud

来自分类Dev

[Swift]我无法从特定网址获取任何JSON数据

来自分类Dev

Android从Json网址获取字符串

来自分类Dev

扩展Ember JSONAPIAdapter findAll以从自定义网址获取json

来自分类Dev

获取json网址链接(Youtube)以使用angularjs显示

来自分类Dev

从短网址获取最终网址

来自分类Dev

从外部网址获取图像的网址

来自分类Dev

获取点击的href的网址

来自分类Dev

从网址获取数据的问题

来自分类Dev

Django:获取以前的网址

来自分类Dev

如何获取iframe的网址?