【问题标题】:Fetch API in React for JSON file: Uncaught (in promise) SyntaxError: Unexpected token � in JSON at position 0在 React 中获取 JSON 文件的 API:未捕获(承诺中)SyntaxError:意外的令牌在 JSON 中的位置 0
【发布时间】:2023-03-11 18:43:02
【问题描述】:

我在尝试解析 URL 上可用的 JSON 文件时收到此错误。

这是我正在使用的代码:

let link = 'https://Company-url/file.json';
fetch(link, {
          method: "GET",
        }).then(resp => resp.json())
      .then((data) => {
        functionName.setData(data);
      });

文件可通过其 URL 直接(公开)访问。

我阅读了其他答案并尝试在标题中将内容类型指定为 JSON,但它仍然显示相同。

在 chrome 网络选项卡中,如果 JSON 的语法有效,我可以查看正在使用 JSON lint 获取和检查的文件。它显示有效。

无法弄清楚我在这里缺少什么。

这是我用来生成 JSON 文件的 JAVA 代码:

File jsFil = new File(i18nGuestPayResourceFolder + File.separator+outputFileName);
Writer out = new OutputStreamWriter(new FileOutputStream(jsFil), "UTF-16");
out.write(msgContainr.getMesageKeyValueJson());

【问题讨论】:

  • UTF-8 与 BOM?
  • 响应中有什么内容?使用 resp.text 而不是 resp.json 来检查它的内容。将 resp.text 也放在 console.log 中
  • 听起来你没有有效的 JSON
  • 我正在通过 JAVA 生成带有 UTF-16 编码的文件。添加了相同的代码。 @ÁlvaroGonzález
  • @epascarello 我检查了 JSON lint。它显示有效的 JSON。这是一个简单的密钥对 JSON。 @C

标签: javascript java json reactjs fetch


【解决方案1】:

基于这里的 cmets,我将我的 JAVA 代码更改为以下,以便使用 UTF-8 编码生成 JSON。

Writer out = new OutputStreamWriter(new FileOutputStream(jsFil), "UTF-16");

现在正在从 API 读取我的文件。

我知道这是因为网页上的默认编码被假定为 UTF-8。

【讨论】:

  • 事实上,UTF-8 是 JSON 中唯一允许的编码 (source)。您可以调整 Content-Type 标头以声明 UTF-16,但 JSON 实现可能会失败。
猜你喜欢
  • 2021-09-23
  • 1970-01-01
  • 2020-02-05
  • 2021-09-12
相关资源
最近更新 更多