Axios: 有时 response.data 是字符串而不是对象

创建于 2018-08-13  ·  43评论  ·  资料来源: axios/axios

我不知道为什么但是使用相同的 api,有时 axios 的 response.data 是字符串而不是对象。 见下图。

image

语境

  • axios 版本:0.18.0
  • 环境:React native Expo SDK 29, window 10

最有用的评论

我发现当来自服务器的 json 响应无效时会发生这种情况,请使用像https://jsonlint.com/这样的 json 验证器来确保您的 json 格式正确

所有43条评论

@huy-lv,

两个响应的content-type是否相同?

@robmcguinness是的,它是 application/json

我看到了同样的行为。 我发现在我的情况下,API 响应有时会包含无效的 JSON 数据,即JSON.parse会抛出。 出于某种原因,Axios 似乎吞下了这个错误,并最终在data属性上设置了无效的 JSON 字符串。

我也遇到这个问题当我检查问题案例的response.data时,一些无效的 JSON 字符串如"数据添加到响应中,这使 JSON.parse 出错并返回字符串。

我已经检查过 Axios、XMLHttpRequest、fetch
1./ Axios 和 XMLHttpRequest 有同样的问题
2./ fetch 工作完美

我知道有一些字符会导致这个问题,只需要确定。
您能否捕获响应并将其附加为文件?

@OpenGG抱歉回复晚了,你需要什么:D
https://1drv.ms/t/s!AnakDtCf8CG5hIgn2Hemy6zanFi50Q

@huy-lv 不是我所期望的。 请使用 curl 保存回复,然后通过将保存的文件拖放到此问题的回复区域来附加保存的文件。

@huy-lv

没关系,找到了。
我把它贴在 gist 上并尝试用 axios 加载,看不到任何错误。

文件: https :
演示: https :

我知道,这个问题不会一直发生,每 10 个请求大约 1-2 次(相同的 API,相同的响应)

@OpenGG它发生在 React-Native 上。 Web App 完美运行。

@nighttiger1990

你能在世博会上做一个在线演示,分享一下吗? 这个demo应该对Axios和XMLHttpRequest都发出相同的请求,以确定是Axios还是RN导致了这个问题。

@OpenGG你能把你的邮件给我吗,我会给你发 api,我不能公开
https://github.com/nighttiger1990/axiosBug.git

这个问题好运吗? 我也面临

@Druthi现在我使用 'fetch' 而不是 'axios'

任何更新?

这可能不是你的情况,但在我的情况下:
我的 API 响应字符串不是有效的 JSON,因此 axios 无法解析为 JSON,而是返回原始字符串。

我已将我的应用程序(redux-saga、axios)迁移到 webpack4,现在 response.data 是一个字符串而不是对象。 我所做的迁移更改很少能成功编译
包.json
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0",
"webpack-dev-middleware": "^3.6.1",
"webpack-dev-server": "^3.2.1"
"文件加载器": "^3.0.1",

webpack-config.js
添加模式:'development',到module.exports
注释掉颜色:true,在 devServer 中
注释掉 json-loader

我运行 JSON.parse(response.data) 并且 JSON 已损坏。 (意外令牌:JSON 格式,位置 8181)

            "municipality": "ddrNote": ""      should be

            "municipality": "",
            "addrNote": ""

我与我的迁移前 webpack3 代码进行了比较,其中 response.data 中的 JSON 是好的(对象)。 因此,迁移的代码正在设法破坏 response.data 中的 JSON,这就是它显示为字符串的原因。 所以现在的问题是为什么 JSON 损坏了

我通过降级到“webpack-dev-server”解决了这个问题:“3.1.10”

我有一个 devServer 代理,我猜这是 3.1.10 以上版本响应损坏的原因

@petercutting也是生产环境的问题,没观察到吗?

@nyilmaz我的问题原来是由 webpack-dev-server 引起的。 webpack-dev-server 不会在生产环境中使用

@petercutting您是否针对 webpack-dev-server 提出了问题? 我找不到了。

@goodmorninggoaway我不记得了。 可能不是

不管 webpack-dev-server 问题如何,Axios 不应该默默地吞下JSON.parse异常,对吧?

我只是通过从后端发送格式错误的 JSON 来测试应用程序的健壮性。 Axios 请求以静默方式无法解码 JSON。 标头content-type仍然表示"application/json" ,但response.data是未解析的原始字符串,并且我的应用程序意外崩溃作为后续操作。

一个拥有 60k 星的库竟然有这样一个基本的 bug 半年,真是太疯狂了 :confused:

不管 webpack-dev-server 问题如何,Axios 不应该默默地吞下 JSON.parse 异常,对吧?

完全有效

有关本机反应的此错误的任何更新!?

我发现当来自服务器的 json 响应无效时会发生这种情况,请使用像https://jsonlint.com/这样的 json 验证器来确保您的 json 格式正确

正在跟踪错误吞咽问题,我将关闭此问题,因为它本质上是它的重复。

如果您有任何问题,请与我们联系。

@fed135请链接相关问题(如果有),谢谢。

有人解决了这个问题吗?,我使用 laravel 作为我的 API,所以我在将它发送到我的应用程序之前记录了我的响应。 记录的响应是有效的 JSON,但接收到的响应末尾缺少最后一个“}”大括号,使其成为无效响应。 我不知道为什么我的移动应用程序会出现这种情况,因为前端应用程序也使用 axios,它工作正常,也尝试过邮递员,它工作正常。 任何想法或解决方案请?

当数据变得太大时会发生这种情况:(我没有任何问题,因为数据数组很小!

@matinzd我对我的数据进行分页,只返回 20

@matinzd还有,我的 fronend 应用程序使用相同的端点,但它没有遇到这种情况,只有具有 react native 的移动应用程序有时会

@fed135这是作为后续跟踪跟踪的正确问题吗? #61

请我的laravel api 以字符串的形式出现

我终于找到了我的解决方案。
我得到的数据是 ===

我有同样的错误
:(

遇到同样的问题,在 jsonlint.com 签入后,我有NaN ,json 无法解析它,如下所示。 所以我们需要确保我们的后端发送了有效的 JSON 数据。

Error: Parse error on line 186:
...,    "position_name": NaN,   "group_name": 
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'

同样的错误,谁能修复它:|

☝️我做了一个快速公关来解决这个问题。 希望它有帮助

使用 axios 0.19.2 在 react-native 中解决此问题
关于这个问题的任何更新?

我遇到了同样的问题,我解决了这个问题,请更改 axios 的方法,如果您有“GET”方法,则无法发送正文,因为您可以解决此问题,要解决此问题,您需要更改为“POST”,它会工作

此页面是否有帮助?
0 / 5 - 0 等级