【问题标题】:React Native fetch sometimes catch a JSON parse errorReact Native fetch 有时会捕获 JSON 解析错误
【发布时间】:2018-03-31 00:48:42
【问题描述】:

我正在开发一个 React Native 应用程序,它从服务器获取 API 响应。有时,它返回成功,但有时它会捕获错误。

以下代码是我的fetch函数:

export default async (url, body = null, method = 'GET') => {
    let config = {
        method,
    };
    return await fetch(url, config).then((response) => {
        if (!response.ok) {
            throw Error(response.statusText);
        }
        return response.json();
    }).catch(error => {
        console.warn(error); // sometimes it was catched in here
    });
};

它正在返回各种错误消息,例如:

[SyntaxError: JSON Parse error: "\u302\" 不是有效的 unicode 转义]
[SyntaxError:JSON 解析错误:无效的转义字符 4]
[SyntaxError: JSON Parse error: "\u740\" is not a valid unicode escape]

我已经通过浏览器检查了我的 API 响应,它没有发现响应有任何问题。我认为我的 ES 代码可能有问题。

这里出了什么问题...?

【问题讨论】:

    标签: javascript reactjs react-native fetch


    【解决方案1】:

    \u302\ 字符似乎类似于称为“组合循环重音”的 ^ 符号 http://www.fileformat.info/info/unicode/char/0302/index.htm

    而 \u740\ 是一个“SYRIAC FEMININE DOT” http://www.fileformat.info/info/unicode/char/0740/index.htm

    我猜 JSON 解析器无法处理这些字符,或者至少无法处理它们的呈现方式。看起来它们被用作转义字符,但很难知道,因为您没有提供生成每个错误的输出样本。

    【讨论】:

    • 感谢您的回答。这是示例 JSON 输出:pastebin.com/vduDQJ8g。但是,有时它可以处理它。
    • 哪个错误映射到这个输出?如果您可以提供与此 JSON 输出相关的完整错误消息,那将有所帮助。
    • 很难找到确切的错误位置,因为有时它被成功解析。是 fetch 的错误吗?
    • 我认为这是数据的问题。因此,当发生错误时,请捕获并分析响应以及特定错误以找出答案。
    • 异步进程有问题吗?也许响应还没有完成,但是 JSON 解析过程已经在运行,所以它抛出了一个错误。
    猜你喜欢
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 2017-10-21
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多