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

Laravel解析控制器JSON响应获取success值时出现空值访问报错

解决JSON解析报错:Trying to access array offset on value of type null

错误原因

出现这个错误的核心是json_decode($assign)返回了null,说明传入的$assign不是有效的JSON格式字符串,常见诱因包括:

  • $assign变量为空,或未正确获取到控制器的响应内容
  • Laravel控制器的响应被额外输出(比如调试用的echo、var_dump)污染,导致JSON结构不完整
  • 响应内容存在编码问题或多余空白字符

解决方案

1. 先验证$assign的有效性

在解析前先排查原始内容是否为合法JSON:

// 打印原始内容确认
var_dump($assign);

// 或用内置函数查看解析错误
$json = json_decode($assign);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'JSON解析错误:' . json_last_error_msg();
    exit;
}

2. 确保控制器返回纯净JSON

控制器必须使用response()->json()返回响应,删除所有额外输出代码:

// 控制器正确返回JSON的写法
return response()->json([
    'success' => 1,
    'message' => 'Transaction assigned to customer.'
]);

如果之前有dd()、echo这类调试代码,必须全部移除,否则会破坏JSON结构。

3. 正确解析JSON的两种方式

确认$assign是有效JSON后,可选择以下两种方式获取success值:

  • 对象式解析(需确保解析成功):
$json = json_decode($assign);
if ($json) {
    $success = $json->success;
    echo $success; // 输出1
}
  • 数组式解析(更稳妥,避免对象访问的潜在问题):
$json = json_decode($assign, true); // 第二个参数传true返回关联数组
if ($json) {
    $success = $json['success'];
    echo $success; // 输出1
}

4. 排查请求获取环节

如果是通过HTTP请求获取控制器响应,确保拿到完整响应体,比如使用Laravel自带的Http客户端:

$response = Http::get('你的控制器接口地址');
$assign = $response->body(); // 获取完整响应体字符串
$json = json_decode($assign, true);
$success = $json['success'];

内容的提问来源于stack exchange,提问作者Benjamin Mwendwa Munyoki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:36:08