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

Laravel REST API报错:Cannot use JsonResponse object as array

问题排查与解决:Cannot use object of type Illuminate\Http\JsonResponse as array

问题原因

  • config()方法返回的是response()->json()生成的Illuminate\Http\JsonResponse对象,而非原始数组。
  • 在getShade()方法中,直接将$config = $this->config()的结果当作数组访问$config["ip"],导致类型错误。

解决方案

推荐拆分配置逻辑与API响应逻辑,既保证代码复用性,又避免类型错误:

修改后的完整代码

// 提取纯配置数据的私有方法,供内部调用
private function getConfigData()
{
    return [
        "ip" => '172.16.1.',
        "shade" => [
            "one"   => ["from" => 0, "to" => 63],
            "two"   => ["from" => 64, "to" => 127],
            "three" => ["from" => 128, "to" => 192],
            "four"  => ["from" => 193, "to" => 257],
            "all"   => ["from" => 0, "to" => 257],
        ],
    ];
}

// 原config接口方法,负责返回API响应
public function config()
{
    try {
        $data = $this->getConfigData();
        return response()->json([
            'status' => true,
            'message' => "Configuration Done",
            'data' => $data
        ], 200);
    } catch (\Exception $e) {
        return response()->json([
            'error' => $e->getMessage()
        ], 500);
    }
}

// 修改后的getShade方法,调用纯数据方法获取配置
public function getShade(Request $request){
    try {
        $config = $this->getConfigData();
        $base = $config["ip"];
        $curent_shade = $config['shade'][$request->shade];
        $from = $curent_shade['from'];

        $to = $curent_shade['to'];
        $ips_range = range($curent_shade['from'], $curent_shade['to']);
        $ips = [];

        foreach ($ips_range as $key => $value) {
            $ips[] = [
                "ip" => $base . $value,
                "mn" => $from + 1,
            ];

            $from++;
        }

        $data['ips'] = $ips;

        return response()->json([
            'data' => $data,
            'status' => true,
            'message' => "Shade Selected Done"
        ], 200);

    } catch (\Exception $e) {
        return response()->json([
            'error' => $e->getMessage()
        ], 500);
    }
}

额外说明

  • 拆分后的代码将数据逻辑和API响应逻辑分离,避免了不必要的JSON解析操作,代码复用性更强。
  • 修正了原代码中"Sahde Selected Done"的拼写错误,改为"Shade Selected Done"。

内容的提问来源于stack exchange,提问作者Saikat Sen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:35:22