You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel API返回带双引号的数值,求助原因及解决方法

Laravel API响应数值被双引号包裹问题排查与解决

最近碰到个头疼的问题:Laravel API返回的数值居然被双引号包裹了,导致前端处理时完全不符合预期,折腾了好一会儿才解决,跟大家分享下过程:

先说明下我的项目环境:

  • Laravel版本:5.6.12
  • PHP版本:7.1
  • Vue.js版本:2.5
  • 数据库:MySQL 5.7(使用mysqlnd驱动)

从服务器接收的响应截图如下:
API响应异常截图

我的API响应代码其实很常规,就是标准的返回JSON格式:

$data = ['message' => 'Hello'];
return response()->json($data, 200);

问题根源

折腾半天终于搞明白,核心原因是响应被重复序列化了!大概率是项目里某个全局中间件或者自定义中间件,对已经是JSON格式的响应做了二次json_encode处理。比如中间件里写了类似这样的错误代码:

// 错误示例:二次编码导致内容被双引号包裹
return response()->json($response->getContent());

原本response()->json()已经把数组转成了JSON字符串,结果中间件又把这个字符串当成普通内容再次JSON编码,自然就会被双引号整个包裹起来。

解决方法

  1. 检查项目的中间件配置(app/Http/Kernel.php里的$middleware和$middlewareGroups),定位到对响应做额外处理的中间件。
  2. 把中间件里二次编码的逻辑去掉,直接返回原始响应即可,比如改成:
return $response;
  1. 也可以顺带检查config/app.php里的json_options配置,确保没有设置会导致额外编码的冗余选项。

内容的提问来源于stack exchange,提问作者Script Mint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:33:48